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