]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsRhoNsigma.C
Updated macros for lego train (mvala) + added scripts folder
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsRhoNsigma.C
CommitLineData
aec68607 1#ifndef __CINT__\r
2#include <AliRsnCutPIDNSigma.h>\r
3#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>\r
4#endif\r
5Int_t AddRsnDaughterCutsRhoNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)\r
6{\r
7\r
8 if (!rsnIH) return 0;\r
9\r
10 Bool_t valid;\r
11 Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);\r
12\r
13 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====\r
14 Int_t numberOfCuts = 1;\r
15\r
16 //---------------------------------------------\r
17 // Define single cuts\r
18 //---------------------------------------------\r
19\r
20 Printf("AddRsnDaughterCutsRho Option : %s",opt.Data());\r
21\r
22 Double_t nSigmaTPC=3.0;\r
23 Double_t nSigmaTOF=3.0;\r
24 Double_t etaRange=0.8;\r
25 Bool_t useTPC_Pi=kFALSE;\r
26 Bool_t useTOF_Pi=kFALSE;\r
27\r
28 if (opt.Contains("qualityonly")) {\r
29 useTPC_Pi=kFALSE;\r
30 useTOF_Pi=kFALSE;\r
31 } else if (!opt.Contains("nsig")) {\r
32 useTPC_Pi=kTRUE;\r
33 useTOF_Pi=kTRUE;\r
34 }\r
35\r
36 if (opt.Contains("PiTPCnsig")) useTPC_Pi=kTRUE;\r
37 if (opt.Contains("PiTOFnsig")) useTOF_Pi=kTRUE;\r
38\r
39 if (opt.Contains("PiTPCnsig10")) nSigmaTPC = 1.0;\r
40 if (opt.Contains("PiTPCnsig15")) nSigmaTPC = 1.5;\r
41 if (opt.Contains("PiTPCnsig20")) nSigmaTPC = 2.0;\r
42 if (opt.Contains("PiTPCnsig25")) nSigmaTPC = 2.5;\r
43 if (opt.Contains("PiTPCnsig30")) nSigmaTPC = 3.0;\r
44\r
45 if (opt.Contains("PiTOFnsig10")) nSigmaTOF = 1.0;\r
46 if (opt.Contains("PiTOFnsig15")) nSigmaTOF = 1.5;\r
47 if (opt.Contains("PiTOFnsig20")) nSigmaTOF = 2.0;\r
48 if (opt.Contains("PiTOFnsig25")) nSigmaTOF = 2.5;\r
49 if (opt.Contains("PiTOFnsig30")) nSigmaTOF = 3.0;\r
50\r
51 Bool_t usePDG=kFALSE;\r
52 if (opt.Contains("pdg")) {\r
53 Printf("Using PDG");\r
54 usePDG = kTRUE;\r
55 }\r
56\r
57 Bool_t useEta = kFALSE;\r
58 if (opt.Contains("eta")) {\r
59 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);\r
60 useEta = kTRUE;\r
61 }\r
62\r
63//---------------------------------------------\r
64// Combine cuts\r
65//---------------------------------------------\r
66\r
67 TString cutname = "Pi_Rho";\r
68 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());\r
69 AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);\r
70\r
71 TString scheme="";\r
72\r
73 AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatityPi");\r
74 //qualityCut->SetDefaults2010();\r
75 \r
76 qualityCut->SetDCAZmax(0.2);\r
77 qualityCut->SetDCARmax(0.02);\r
78 qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);\r
79 qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r
80 qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r
81 \r
82 qualityCut->SetPtRange(0.2, 1E+20);\r
83 qualityCut->SetEtaRange(-0.8, 0.8);\r
84 qualityCut->SetSPDminNClusters(0);\r
85 qualityCut->SetITSminNClusters(0);\r
86 qualityCut->SetITSmaxChi2(1E+20);\r
87 qualityCut->SetTPCminNClusters(70);\r
88 qualityCut->SetTPCmaxChi2(4.0);\r
89 qualityCut->SetRejectKinkDaughters();\r
90\r
91 cuts->AddCut(qualityCut);\r
92 if (!scheme.IsNull()) scheme += "&";\r
93 scheme += qualityCut->GetName();\r
94\r
95 if (useTPC_Pi) {\r
96 AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r
97 cutPiTPC->SinglePIDRange(nSigmaTPC);\r
98 cuts->AddCut(cutPiTPC);\r
99 if (!scheme.IsNull()) scheme += "&";\r
100 scheme += cutPiTPC->GetName();\r
101 }\r
102 if (useTOF_Pi) {\r
103 AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r
104 cutPiTOF->SinglePIDRange(nSigmaTOF);\r
105 cuts->AddCut(cutPiTOF);\r
106 if (!scheme.IsNull()) scheme += "&";\r
107 scheme += cutPiTOF->GetName();\r
108 }\r
109 if (useEta) {\r
110 Printf("Adding ETA ...");\r
111 AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);\r
112 AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);\r
113 cutEta->SetTargetType(AliRsnTarget::kDaughter);\r
114 cutEta->SetValueObj(valEta);\r
115 cuts->AddCut(cutEta);\r
116 if (!scheme.IsNull()) scheme += "&";\r
117 scheme += cutEta->GetName();\r
118 }\r
119 if (usePDG) {\r
120 Printf("Adding PDG ...");\r
121 AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);\r
122 cuts->AddCut(cutPDG);\r
123 if (!scheme.IsNull()) scheme += "&";\r
124 scheme += cutPDG->GetName();\r
125 }\r
126\r
127 Printf ("CUT Scheme is '%s'",scheme.Data());\r
128 cuts->SetCutScheme(scheme.Data());\r
129\r
130 if (opt.Contains("mon")) {\r
131 AddMonitorOutput(cuts->GetMonitorOutput(),opt);\r
132 }\r
133 if (isRsnMini) {\r
134 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);\r
135 if (taskRsnMini) {\r
136 taskRsnMini->AddTrackCuts(cuts);\r
137 }\r
138 } else {\r
139 AliRsnDaughterSelector *sel = rsnIH->GetSelector();\r
140// sel->SetLabelCheck(kFALSE);\r
141 sel->Add(cuts, kTRUE);\r
142 }\r
143 return numberOfCuts;\r
144\r
145}\r
146\r