]>
Commit | Line | Data |
---|---|---|
51a8daf6 | 1 | #ifndef __CINT__ |
2 | #include <AliRsnCutPIDNSigma.h> | |
3 | #include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h> | |
4 | #endif | |
5 | Int_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 |