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