]>
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; | |
60 | ||
db54daad | 61 | if (opt.Contains("trackPt")) { |
62 | useTrackPtCut = kTRUE; | |
63 | if (opt.Contains("trackPtMin02")) trackPtMin = 0.2; | |
64 | if (opt.Contains("trackPtMin05")) trackPtMin = 0.5; | |
65 | ||
66 | if (opt.Contains("trackPtMax18")) trackPtMax = 1.8; | |
67 | if (opt.Contains("trackPtMax20")) trackPtMax = 2.0; | |
68 | if (opt.Contains("trackPtMax25")) trackPtMax = 2.5; | |
69 | } | |
70 | ||
4ce3e7cd | 71 | Bool_t usePDG=kFALSE; |
72 | if (opt.Contains("pdg")) { | |
73 | Printf("Using PDG"); | |
74 | usePDG = kTRUE; | |
75 | } | |
76 | ||
77 | Bool_t useEta = kFALSE; | |
78 | if (opt.Contains("eta")) { | |
db54daad | 79 | if(opt.Contains("eta08")) etaRange=0.8; |
80 | if(opt.Contains("eta07")) etaRange=0.7; | |
81 | if(opt.Contains("eta06")) etaRange=0.6; | |
4ce3e7cd | 82 | Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange); |
83 | useEta = kTRUE; | |
84 | } | |
85 | ||
86 | //--------------------------------------------- | |
87 | // Combine cuts | |
88 | //--------------------------------------------- | |
89 | ||
90 | TString cutname = "K_Phi"; | |
91 | if (!opt.IsNull()) cutname += Form("_%s",opt.Data()); | |
92 | AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter); | |
93 | ||
94 | TString scheme=""; | |
db54daad | 95 | AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQualityK"); |
96 | if (useCommonQualityCut>=0) { | |
97 | qualityCut->SetAODTestFilterBit(useCommonQualityCut); | |
98 | } else { | |
99 | qualityCut->SetDefaults2010(); | |
100 | } | |
4ce3e7cd | 101 | cuts->AddCut(qualityCut); |
102 | if (!scheme.IsNull()) scheme += "&"; | |
103 | scheme += qualityCut->GetName(); | |
104 | ||
105 | ||
106 | if (useTPC_K) { | |
107 | AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC); | |
108 | cutKTPC->SinglePIDRange(nSigmaTPC); | |
109 | cuts->AddCut(cutKTPC); | |
110 | if (!scheme.IsNull()) scheme += "&"; | |
111 | scheme += cutKTPC->GetName(); | |
112 | } | |
113 | ||
114 | if (useTOF_K) { | |
115 | AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF); | |
116 | cutKTOF->SinglePIDRange(nSigmaTOF); | |
117 | cuts->AddCut(cutKTOF); | |
118 | if (!scheme.IsNull()) scheme += "&"; | |
119 | scheme += cutKTOF->GetName(); | |
120 | } | |
db54daad | 121 | |
4ce3e7cd | 122 | if (useEta) { |
123 | Printf("Adding ETA ..."); | |
124 | AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta); | |
125 | AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange); | |
126 | cutEta->SetTargetType(AliRsnTarget::kDaughter); | |
127 | cutEta->SetValueObj(valEta); | |
128 | cuts->AddCut(cutEta); | |
129 | if (!scheme.IsNull()) scheme += "&"; | |
130 | scheme += cutEta->GetName(); | |
131 | } | |
db54daad | 132 | |
133 | if (useTrackPtCut) { | |
134 | Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax); | |
135 | AliRsnValueDaughter *valTrackPt = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt); | |
136 | ||
137 | AliRsnCutValue *cutTrackPt = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax); | |
138 | cutTrackPt->SetTargetType(AliRsnTarget::kDaughter); | |
139 | cutTrackPt->SetValueObj(valTrackPt); | |
140 | cuts->AddCut(cutTrackPt); | |
141 | if (!scheme.IsNull()) scheme += "&"; | |
142 | scheme += cutTrackPt->GetName(); | |
143 | } | |
144 | ||
4ce3e7cd | 145 | if (usePDG) { |
146 | Printf("Adding PDG ..."); | |
147 | AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE); | |
148 | cuts->AddCut(cutPDG); | |
149 | if (!scheme.IsNull()) scheme += "&"; | |
150 | scheme += cutPDG->GetName(); | |
151 | } | |
152 | ||
153 | Printf ("CUT Scheme is '%s'",scheme.Data()); | |
154 | cuts->SetCutScheme(scheme.Data()); | |
155 | ||
156 | if (opt.Contains("mon")) { | |
157 | AddMonitorOutput(cuts->GetMonitorOutput(),opt); | |
158 | } | |
159 | if (isRsnMini) { | |
db54daad | 160 | AliRsnMiniAnalysisTask *taskRsnMini = (AliRsnMiniAnalysisTask *)task; |
4ce3e7cd | 161 | if (taskRsnMini) { |
162 | taskRsnMini->AddTrackCuts(cuts); | |
163 | } | |
164 | } else { | |
165 | AliRsnDaughterSelector *sel = rsnIH->GetSelector(); | |
166 | // sel->SetLabelCheck(kFALSE); | |
167 | sel->Add(cuts, kTRUE); | |
168 | } | |
169 | return numberOfCuts; | |
170 | ||
171 | } | |
172 |