HighLAND
CategoriesUtils.hxx
1 #ifndef CategoriesUtils_h
2 #define CategoriesUtils_h
3 
4 #include "DataClasses.hxx"
5 #include "Deprecated.hxx"
6 #include "CategoryManager.hxx"
7 
8 /// This namespace contains useful functions for analyses. Functions include
9 /// those related to fiducial volumes, accessing tracks with specific
10 /// characteristics, and more.
11 namespace anaUtils{
12 
13  /// Add the standard categories only, given a prefix for their name.
14  void AddStandardCategories(const std::string& prefix = "");
15 
16  /// Add the standard categories only, given a prefix for their name.
17  void AddStandardAntiNumuCategories(const std::string& prefix = "");
18 
19  /// Classify reaction topologies
20  Int_t GetTopology(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
21  Int_t GetTopology_no1pi(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
22 
23  /// Classify the topology type for nu-mu CC pi-zero analysis
24  Int_t GetTopology_withpi0(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
25  Int_t GetTopologyCCPiZero(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
26 
27  /// Classify reaction topologies in special attention to MEC process
28  Int_t GetMECTopology(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1,bool IsAntinu = false);
29 
30  /// Fill the track categories for color drawing.
31  void FillCategories(AnaEventB* event, AnaTrack* track, const std::string& prefix, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false, bool useCATSAND = true);
32  void FillCategories(AnaEventB* event, AnaTrack* track, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false, bool useCATSAND = true);
33  void FillCategories(const AnaTrueVertexB* vertex, const std::string& prefix, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false, bool IsSand = false);
34  void FillCategories(const AnaTrueVertexB* vertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false, bool IsSand = false);
35  void SetCategoriesDefaultCode(const std::string& prefix, const int code = CATNOTRUTH);
36 
37  /// Fill the track categories for color drawing.
38  DEPRECATED(void FillTruthTreeCategories(const AnaTrueVertex& trueVertex, const std::string& prefix, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false));
39  DEPRECATED(void FillTruthTreeCategories(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false));
40 
41  /// Return the code for the "antinumuparent" category.
42  /// Although this category is not one of the standard ones (it is added in
43  /// antiNuMuCCAnalysis), the function is useful to have here as it is used in
44  /// baseAnalysis::FillRedoSelectionVariables().
45  Int_t GetAntiNuMuParent(AnaTrueVertex* trueVertex, AnaTrack* track);
46 
47  /// Classify reaction types
48  Int_t GetReaction(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
49  Int_t GetReactionCC(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
50  Int_t GetReactionNoFgdFv(const AnaTrueVertex& trueVertex, bool IsAntinu = false);
51 
52  /// Classify reaction types,
53  /// Returns the same codes as GetReaction(), except for no '8', which corresponds to sand muons
54  Int_t GetReactionSand(const AnaEventB& event, const AnaTrack& track, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
55  Int_t GetReactionSand(const AnaEventB& event, const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
56  Int_t GetReactionSandCC(const AnaEventB& event, const AnaTrack& track, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
57  Int_t GetReactionSandCC(const AnaEventB& event, const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu = false);
58 
59  /// Classify reaction types for antinu
60  Int_t GetTopology_antinu(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
61  Int_t GetTopology_no1pi_antinu(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
62  Int_t GetTopology_withpi0_antinu(const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1);
63  Int_t GetTopologyCCPiZero_antinu(const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1);
64  Int_t GetMECTopology_antinu(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
65  Int_t GetReaction_antinu(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
66  Int_t GetReactionCC_antinu(const AnaTrueVertex& trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
67  Int_t GetReactionNoFgdFv_antinu(const AnaTrueVertex& trueVertex);
68  Int_t GetReactionSand_antinu(const AnaEventB& event, const AnaTrack& track, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
69  Int_t GetReactionSand_antinu(const AnaEventB& event, const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1);
70  Int_t GetReactionSandCC_antinu(const AnaEventB& event, const AnaTrack& track, const SubDetId::SubDetEnum det=SubDetId::kFGD1);
71  Int_t GetReactionSandCC_antinu(const AnaEventB& event, const AnaTrueVertex& trueVertex,const SubDetId::SubDetEnum det=SubDetId::kFGD1);
72 
73  /// Get the code for filling the target PDG category.
74  Int_t GetTargetCode(const AnaTrueVertex* trueVertex);
75 
76  enum TopoEnum {
77  CC_0pi_0meson = 0,
78  CC_1pi_0meson = 1, //used for both 1piplus and 1piminus
79  CC_other = 2,
80  BKG = 3, // NC + (anti)nu
81  // used only up to here, by now
82  CC_0pi_0meson_1p,
83  CC_0pi_0meson_Np, // N = more than 1
84  CC_0pi_0meson_0n,
85  CC_0pi_0meson_1n,
86  CC_0pi_0meson_Nn, // N = more than 1
87  CC_1piplus_0meson,
88  CC_1piminus_0meson,
89  CC_1pi0_0meson,
90  CC_Npi0_X // N = more than 1
91  };
92 
93 }
94 #endif
95 
96 // LocalWords: ifndef
Int_t GetTopology_withpi0(const AnaTrueVertex &trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false)
Classify the topology type for nu-mu CC pi-zero analysis.
Representation of a global track.
Representation of a true Monte Carlo vertex.
Int_t GetMECTopology(const AnaTrueVertex &trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false)
Classify reaction topologies in special attention to MEC process.
Int_t GetTopology(const AnaTrueVertex &trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false)
Classify reaction topologies.
Int_t GetReaction(const AnaTrueVertex &trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false)
Classify reaction types.
Int_t GetTopology_antinu(const AnaTrueVertex &trueVertex, const SubDetId::SubDetEnum det=SubDetId::kFGD1)
Classify reaction types for antinu.
Representation of a true Monte Carlo vertex.
Definition: DataClasses.hxx:50
void AddStandardAntiNumuCategories(const std::string &prefix="")
Add the standard categories only, given a prefix for their name.
Int_t GetReactionSand(const AnaEventB &event, const AnaTrack &track, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false)
SubDetEnum
Enumeration of all detector systems and subdetectors.
Definition: SubDetId.hxx:25
void FillCategories(AnaEventB *event, AnaTrack *track, const std::string &prefix, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false, bool useCATSAND=true)
Fill the track categories for color drawing.
Int_t GetAntiNuMuParent(AnaTrueVertex *trueVertex, AnaTrack *track)
void AddStandardCategories(const std::string &prefix="")
Add the standard categories only, given a prefix for their name.
This namespace contains useful functions for analyses related to kinematics.
DEPRECATED(void FillTruthTreeCategories(const AnaTrueVertex &trueVertex, const std::string &prefix, const SubDetId::SubDetEnum det=SubDetId::kFGD1, bool IsAntinu=false))
Fill the track categories for color drawing.
Int_t GetTargetCode(const AnaTrueVertex *trueVertex)
Get the code for filling the target PDG category.