]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsRhoNsigma.C
e803e824fd594dc5503ef86a48a382a82daaf750
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsRhoNsigma.C
1 #ifndef __CINT__\r
2 #include <AliRsnCutPIDNSigma.h>\r
3 #include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>\r
4 #endif\r
5 Int_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