]>
Commit | Line | Data |
---|---|---|
4ce3e7cd | 1 | #ifndef __CINT__ |
db54daad | 2 | #include <AliRsnCutTrackQuality.h> |
4ce3e7cd | 3 | #endif |
4 | Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0) | |
5 | { | |
6 | ||
7 | if (!rsnIH) return 0; | |
8 | ||
9 | Bool_t valid = kTRUE; | |
10 | Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid); | |
db54daad | 11 | Int_t useCommonQualityCut = AliAnalysisManager::GetGlobalInt("rsnCommonQualityCut",valid); |
12 | ||
4ce3e7cd | 13 | |
14 | Bool_t usePPCut = kFALSE; | |
15 | ||
16 | if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE; | |
17 | ||
18 | ||
19 | // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS ===== | |
20 | Int_t numberOfCuts = 1; | |
21 | ||
22 | //--------------------------------------------- | |
23 | // Define single cuts | |
24 | //--------------------------------------------- | |
25 | ||
26 | Printf("AliRsnCutPIDNSigma Option : %s",opt.Data()); | |
27 | ||
28 | Double_t nSigmaTPC=3.0; | |
29 | Double_t nSigmaTOF=3.0; | |
30 | Double_t etaRange=0.8; | |
db54daad | 31 | Double_t trackPtMin=0.; |
32 | Double_t trackPtMax=1.e10; | |
4ce3e7cd | 33 | |
34 | Bool_t useTPC_K=kFALSE; | |
35 | Bool_t useTOF_K=kFALSE; | |
db54daad | 36 | Bool_t useTrackPtCut=kFALSE; |
4ce3e7cd | 37 | |
38 | if (opt.Contains("qualityonly")) { | |
39 | useTPC_K=kFALSE; | |
40 | useTOF_K=kFALSE; | |
41 | } else if (!opt.Contains("nsig")) { | |
42 | useTPC_K=kTRUE; | |
43 | useTOF_K=kTRUE; | |
44 | } | |
45 | ||
46 | if (opt.Contains("KTPCnsig")) useTPC_K=kTRUE; | |
47 | if (opt.Contains("KTOFnsig")) useTOF_K=kTRUE; | |
48 | ||
49 | if (opt.Contains("KTPCnsig10")) nSigmaTPC = 1.0; | |
50 | if (opt.Contains("KTPCnsig15")) nSigmaTPC = 1.5; | |
51 | if (opt.Contains("KTPCnsig20")) nSigmaTPC = 2.0; | |
52 | if (opt.Contains("KTPCnsig25")) nSigmaTPC = 2.5; | |
53 | if (opt.Contains("KTPCnsig30")) nSigmaTPC = 3.0; | |
54 | ||
55 | if (opt.Contains("KTOFnsig10")) nSigmaTOF = 1.0; | |
56 | if (opt.Contains("KTOFnsig15")) nSigmaTOF = 1.5; | |
57 | if (opt.Contains("KTOFnsig20")) nSigmaTOF = 2.0; | |
58 | if (opt.Contains("KTOFnsig25")) nSigmaTOF = 2.5; | |
59 | if (opt.Contains("KTOFnsig30")) nSigmaTOF = 3.0; | |
dc8dd82a | 60 | |
61 | if (opt.Contains("KTOFnsig1000")) nSigmaTOF = 100.0; | |
4ce3e7cd | 62 | |
db54daad | 63 | if (opt.Contains("trackPt")) { |
64 | useTrackPtCut = kTRUE; | |
65 | if (opt.Contains("trackPtMin02")) trackPtMin = 0.2; | |
66 | if (opt.Contains("trackPtMin05")) trackPtMin = 0.5; | |
67 | ||
68 | if (opt.Contains("trackPtMax18")) trackPtMax = 1.8; | |
69 | if (opt.Contains("trackPtMax20")) trackPtMax = 2.0; | |
70 | if (opt.Contains("trackPtMax25")) trackPtMax = 2.5; | |
71 | } | |
72 | ||
4ce3e7cd | 73 | Bool_t usePDG=kFALSE; |
74 | if (opt.Contains("pdg")) { | |
75 | Printf("Using PDG"); | |
76 | usePDG = kTRUE; | |
77 | } | |
78 | ||
79 | Bool_t useEta = kFALSE; | |
80 | if (opt.Contains("eta")) { | |
db54daad | 81 | if(opt.Contains("eta08")) etaRange=0.8; |
82 | if(opt.Contains("eta07")) etaRange=0.7; | |
83 | if(opt.Contains("eta06")) etaRange=0.6; | |
4ce3e7cd | 84 | Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange); |
85 | useEta = kTRUE; | |
86 | } | |
87 | ||
88 | //--------------------------------------------- | |
89 | // Combine cuts | |
90 | //--------------------------------------------- | |
91 | ||
92 | TString cutname = "K_Phi"; | |
93 | if (!opt.IsNull()) cutname += Form("_%s",opt.Data()); | |
94 | AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter); | |
95 | ||
96 | TString scheme=""; | |
db54daad | 97 | AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQualityK"); |
98 | if (useCommonQualityCut>=0) { | |
99 | qualityCut->SetAODTestFilterBit(useCommonQualityCut); | |
100 | } else { | |
101 | qualityCut->SetDefaults2010(); | |
102 | } | |
4ce3e7cd | 103 | cuts->AddCut(qualityCut); |
104 | if (!scheme.IsNull()) scheme += "&"; | |
105 | scheme += qualityCut->GetName(); | |
106 | ||
107 | ||
108 | if (useTPC_K) { | |
109 | AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC); | |
110 | cutKTPC->SinglePIDRange(nSigmaTPC); | |
111 | cuts->AddCut(cutKTPC); | |
112 | if (!scheme.IsNull()) scheme += "&"; | |
113 | scheme += cutKTPC->GetName(); | |
114 | } | |
115 | ||
116 | if (useTOF_K) { | |
117 | AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF); | |
118 | cutKTOF->SinglePIDRange(nSigmaTOF); | |
119 | cuts->AddCut(cutKTOF); | |
120 | if (!scheme.IsNull()) scheme += "&"; | |
121 | scheme += cutKTOF->GetName(); | |
122 | } | |
db54daad | 123 | |
4ce3e7cd | 124 | if (useEta) { |
125 | Printf("Adding ETA ..."); | |
126 | AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta); | |
127 | AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange); | |
128 | cutEta->SetTargetType(AliRsnTarget::kDaughter); | |
129 | cutEta->SetValueObj(valEta); | |
130 | cuts->AddCut(cutEta); | |
131 | if (!scheme.IsNull()) scheme += "&"; | |
132 | scheme += cutEta->GetName(); | |
133 | } | |
db54daad | 134 | |
135 | if (useTrackPtCut) { | |
136 | Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax); | |
137 | AliRsnValueDaughter *valTrackPt = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt); | |
138 | ||
139 | AliRsnCutValue *cutTrackPt = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax); | |
140 | cutTrackPt->SetTargetType(AliRsnTarget::kDaughter); | |
141 | cutTrackPt->SetValueObj(valTrackPt); | |
142 | cuts->AddCut(cutTrackPt); | |
143 | if (!scheme.IsNull()) scheme += "&"; | |
144 | scheme += cutTrackPt->GetName(); | |
145 | } | |
146 | ||
4ce3e7cd | 147 | if (usePDG) { |
148 | Printf("Adding PDG ..."); | |
149 | AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE); | |
150 | cuts->AddCut(cutPDG); | |
151 | if (!scheme.IsNull()) scheme += "&"; | |
152 | scheme += cutPDG->GetName(); | |
153 | } | |
154 | ||
155 | Printf ("CUT Scheme is '%s'",scheme.Data()); | |
156 | cuts->SetCutScheme(scheme.Data()); | |
157 | ||
158 | if (opt.Contains("mon")) { | |
159 | AddMonitorOutput(cuts->GetMonitorOutput(),opt); | |
160 | } | |
161 | if (isRsnMini) { | |
db54daad | 162 | AliRsnMiniAnalysisTask *taskRsnMini = (AliRsnMiniAnalysisTask *)task; |
4ce3e7cd | 163 | if (taskRsnMini) { |
164 | taskRsnMini->AddTrackCuts(cuts); | |
165 | } | |
166 | } else { | |
167 | AliRsnDaughterSelector *sel = rsnIH->GetSelector(); | |
168 | // sel->SetLabelCheck(kFALSE); | |
169 | sel->Add(cuts, kTRUE); | |
170 | } | |
171 | return numberOfCuts; | |
172 | ||
173 | } | |
174 |