]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPbTRD.C
update of package
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / configs / pPb / ConfigHFEmbpPbTRD.C
CommitLineData
da4985be 1AliAnalysisTaskHFE* ConfigHFEmbpPbTRD(Bool_t useMC, Bool_t isAOD, TString appendix, UChar_t TPCcl=70, UChar_t TPCclPID = 80, UChar_t ITScl=3,
d44e3c84 2 Double_t DCAxy=1000., Double_t DCAz=1000.,
3 Double_t TPCs=0., Double_t TPCu=3.09, Double_t TOFs=3., Int_t TOFmis=0,
4 Double_t IpSig=3., Bool_t prodcut = kFALSE,
5 Bool_t ipOpp = kTRUE, Bool_t mcstr = kFALSE, Int_t itshitpixel = 0,
6 Bool_t withetacorrection = kTRUE, Int_t ptbin=0, Int_t TRDtrigger = 0, Int_t TRDtl=6, Int_t TRDeff=4,
7 TString detector,Int_t etacut=0){
8 //
9 // HFE task configuration PID2 (TOF-TPC-TRD)
10 //
11// AliLog::SetClassDebugLevel("AliHFEpidTRD", 10);
e2861c1a 12 Bool_t kAnalyseTaggedTracks = kTRUE;
d44e3c84 13
14
15 // TRD settings
16 Float_t eeff[6] = {0.7, 0.75, 0.8, 0.85, 0.9, 0.95};
17 Int_t eeffint[6] = {70, 75, 80, 85, 90, 95};
da4985be 18 if(TRDeff >= 6 || TRDtl < 4 || TRDtl > 6) return NULL;
19// if(TRDeff >= 6 || TRDtl > 6) return NULL;
d44e3c84 20 printf("TRD settings: %i %f \n",TRDtl, eeff[TRDeff]);
21
22 Int_t iDCAxy = (Int_t)(DCAxy*10.);
23 Int_t iDCAz = (Int_t)(DCAz*10.);
24 Int_t iTPCs = (Int_t)(TPCs*1000.);
25 Int_t iTOFs = (Int_t)(TOFs*10.);
26 Int_t iIpSig= (Int_t)(IpSig*10.);
27 Int_t iIpOpp= 0;
28 Int_t iProdCut = 1;
29 Int_t iMCStr = 0;
30 Int_t iPixelAny = itshitpixel;
31 Int_t iEtaCorr = 0;
32 if(ipOpp)iIpOpp = 1;
33 if(prodcut) iProdCut = 0;
34 if(mcstr) iMCStr = 1;
35 if(withetacorrection) iEtaCorr = 1;
36
d44e3c84 37
da4985be 38 AliHFEcuts *hfecuts = new AliHFEcuts(appendix,"HFE cuts TOF TPC TRD");
d44e3c84 39 //hfecuts->SetQAOn();
40 hfecuts->CreateStandardCuts();
41 hfecuts->SetMinNClustersTPC(TPCcl);
42 hfecuts->SetMinNClustersTPCPID(TPCclPID);
43 hfecuts->SetMinNClustersITS(ITScl);
44 hfecuts->SetMinRatioTPCclusters(0.6);
45 hfecuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
46 hfecuts->SetCutITSpixel(itshitpixel);
47 hfecuts->SetCheckITSLayerStatus(kFALSE);
48 if(TRDtl>0) hfecuts->SetMinNTrackletsTRD(TRDtl, kTRUE); // number of trd tracklets
49 if(isAOD) hfecuts->SetAODFilterBit(4);
50 Bool_t ipCharge = kFALSE;
51 if(IpSig<0)ipCharge = kTRUE;
52 if(etacut==1) hfecuts->SetEtaRange(-0.6,0.6);
53
54
55 hfecuts->SetIPcutParam(0,0,0,IpSig,kTRUE,ipCharge,ipOpp);
56 if(TMath::Abs(IpSig)>100&&TMath::Abs(IpSig)<220){
57 hfecuts->SetIPcutParam(0.0064,0.078,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
58 }
59 else if(TMath::Abs(IpSig)>220&&TMath::Abs(IpSig)<250){
60 hfecuts->SetIPcutParam(0.0064,0.072,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
61 }
62 else if(TMath::Abs(IpSig)>250&&TMath::Abs(IpSig)<270){
63 hfecuts->SetIPcutParam(0.0064,0.083,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
64 }
65 else if(TMath::Abs(IpSig)>270&&TMath::Abs(IpSig)<300){
66 hfecuts->SetIPcutParam(0.0064,0.088,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
67 }
68 else if(TMath::Abs(IpSig)>300&&TMath::Abs(IpSig)<320){
69 hfecuts->SetIPcutParam(0.0064,0.098,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
70 }
71 else if(TMath::Abs(IpSig)>320&&TMath::Abs(IpSig)<350){
72 hfecuts->SetIPcutParam(0.0064,0.108,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
73 }
74 else if(TMath::Abs(IpSig)>350&&TMath::Abs(IpSig)<410){
75 hfecuts->SetIPcutParam(0.0064,0.058,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
76 }
77 else if(TMath::Abs(IpSig)>410&&TMath::Abs(IpSig)<450){
78 hfecuts->SetIPcutParam(0.0064,0.053,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
79 }
80 else if(TMath::Abs(IpSig)>450&&TMath::Abs(IpSig)<470){
81 hfecuts->SetIPcutParam(0.0064,0.068,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
82 }
83 else if(TMath::Abs(IpSig)>470&&TMath::Abs(IpSig)<500){
84 hfecuts->SetIPcutParam(0.0064,0.048,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
85 }
86 else if(TMath::Abs(IpSig)>500&&TMath::Abs(IpSig)<520){
87 hfecuts->SetIPcutParam(0.0044,0.078,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
88 }
89 else if(TMath::Abs(IpSig)>520&&TMath::Abs(IpSig)<550){
90 hfecuts->SetIPcutParam(0.0054,0.078,-0.56,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
91 }
92 else if(TMath::Abs(IpSig)>550&&TMath::Abs(IpSig)<600){
93 hfecuts->SetIPcutParam(0.011,0.077,-0.65,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
94 }
95 else if(TMath::Abs(IpSig)>600&&TMath::Abs(IpSig)<700){
96 hfecuts->SetIPcutParam(0.012,0.077,-0.65,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
97 }
98 else if(TMath::Abs(IpSig)>700&&TMath::Abs(IpSig)<900){
99 hfecuts->SetIPcutParam(0.013,0.077,-0.65,0,kFALSE,ipCharge,ipOpp); // used Carlo's old parameter (new: 0.011+0.077*exp(-0.65*pt))
100 }
101
102
103 if(prodcut) hfecuts->SetProductionVertex(0,100,0,100);
104 else {
105 if((iPixelAny==AliHFEextraCuts::kAny) || (iPixelAny==AliHFEextraCuts::kSecond)) hfecuts->SetProductionVertex(0,7,0,7);
106 }
107 //if(trdsec) hfecuts->SetAdditionalStatusRequirement(AliVTrack::kTRDout);
108
109 //hfecuts->SetSigmaToVertex(DCAsi);
110 hfecuts->SetMaxImpactParam(DCAxy,DCAz);
111 //hfecuts->SetQAOn();
112 hfecuts->SetUseMixedVertex(kTRUE);
113 hfecuts->SetVertexRange(10.);
114 // New pPb cuts (February 2013)
115 hfecuts->SetUseCorrelationVertex();
116 hfecuts->SetSPDVtxResolutionCut();
d44e3c84 117 // TOF settings:
118 Int_t usetof=0;
119 Bool_t kTOFmis=kFALSE;
120 if (TOFs>0.){
121 usetof = 1;
122 printf("CONFIGURATION FILE: TOF is used \n");
123 hfecuts->SetTOFPIDStep(kTRUE);
124 printf("CONFIGURATION FILE: TOF PID step is requested !!!! \n");
125 if (TOFmis>0){
126 kTOFmis = kTRUE;
127 printf("CONFIGURATION FILE: TOF mismatch rejection is set ON \n");
128 }
129 }
6b508ad3 130 AliAnalysisTaskHFE *task = new AliAnalysisTaskHFE(Form("HFEtask%s",appendix.Data()));
d44e3c84 131 printf("task %p\n", task);
132 task->SetHFECuts(hfecuts);
133 task->GetPIDQAManager()->SetHighResolutionHistos();
d44e3c84 134 if(!isAOD) task->SetRemoveFirstEventInChunk(); // Remove first event in chunk in case of ESD analysis
135 task->SetRemovePileUp(kFALSE);
136 //task->SetApplypAVertexCut();
d44e3c84 137 Bool_t activateTRDTrigger=kFALSE;
138 if(TRDtrigger>0) activateTRDTrigger=kTRUE;
139 task->SetTRDTrigger(activateTRDTrigger,TRDtrigger);
140
141 // Define Variables
142 if(ptbin==1){
143 Double_t ptbinning[19] = {0., 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 2., 2.5, 3., 4., 5., 6., 8., 12., 16., 20.};
144 }
145 else{
420bd2ea 146 //Double_t ptbinning[36] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};
147 Double_t ptbinning[41] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20., 22., 24., 26., 28., 30.};
d44e3c84 148 }
149 //Double_t etabinning[33] = {-0.8, -0.75, -0.7, -0.65, -0.6, -0.55, -0.5, -0.45, -0.4, -0.35, -0.3, -0.25, -0.2, -0.15, -0.1, 0.05, 0., 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8};
150 //Double_t etabinning[17] = {-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8};
151 Double_t etabinning[9] = {-0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8};
152
153 Int_t sizept=(sizeof(ptbinning)/sizeof(double))-1;
154 Int_t sizeeta=(sizeof(etabinning)/sizeof(double))-1;
155
156 AliHFEvarManager *vm = task->GetVarManager();
157 vm->AddVariable("pt", sizept, ptbinning);
158 vm->AddVariable("eta", sizeeta, -0.8,0.8);
159 vm->AddVariable("phi",21, -0, 2*TMath::Pi());
160 vm->AddVariable("charge");
161 vm->AddVariable("source");
162 //vm->AddVariable("centrality");
d44e3c84 163 if(!useMC){
164 // New background model (LHC10d pass2)
165 //TF1 *hBackground = new TF1("hadronicBackgroundFunction", "TMath::Exp(([0]/(x**1.5))+[1])", 0., 20.);
166 TF1 *hBackground = new TF1("hadronicBackgroundFunction", "TMath::Exp([0]+TMath::Sqrt([1]*x))", 0., 20.);
167 // These settings assume that the default is a cut on .ge.120 TPC clusters (Sep 27, 2011)
168 hBackground->SetParameter(0, -15.86);
169 hBackground->SetParameter(1, 33.63);
170 if (TPCcl == 100){
171 hBackground->SetParameter(0, -14.36);
172 hBackground->SetParameter(1, 27.16);
173 } elseif (TPCcl == 110){
174 hBackground->SetParameter(0, -14.88);
175 hBackground->SetParameter(1, 29.28);
176 }
177
178 task->SetBackGroundFactorsFunction(hBackground);
179 }
180
181 // Define PID
182 AliHFEpid *pid = task->GetPID();
183 if(useMC) pid->SetHasMCData(kTRUE);
184 pid->SetDetectorsForAnalysis(detector);
185
186 /*
187 if (usetof){
188 pid->AddDetector("TOF", 0);
189 pid->AddDetector("TRD", 1);
190 pid->AddDetector("TPC", 2);
191 } else {
192 pid->AddDetector("TRD", 0);
193 pid->AddDetector("TPC", 1);
194 }*/
195
196 // HERE PUT THE STRAIGHT CUT
197 Double_t params[4];
198 char *cutmodel;
199 if(useMC){
200 // Monte-Carlo needs modelling of the falling mean with momentum at low momentum
201 // for high momentum it is consistent with a flat -0.94
202 cutmodel = "expo(0)+pol1(2)";//[0]*TMath::Exp([1]*x) + [2] + [3]*x";
203 Double_t paramsMC[4] = {-1.00625e-01, -2.09446e+00, -4.71247e-01, 1.80301e-02};
204 for(int ipar = 0; ipar < 4; ipar++) params[ipar] = paramsMC[ipar];
205 } else {
206 // Data is consistent with a flat constant: (Sep 27, 2011)
207 // 100 clusters: mean = -0.076, width = 1.035
208 // 120 clusters: mean = -0.113, width = 1.03
209 // 140 clusters: mean = -0.093, width = 1.004
210 cutmodel = "pol0(0)";
211 params[0] = TPCs;
212
213 if(withetacorrection) {
214 // Apply eta correction
215 AliHFEpidTPC *tpcpid = pid->GetDetPID(AliHFEpid::kTPCpid);
216 TF1 *etacorrection = GetEtaCorrection();
217 if(etacorrection) tpcpid->SetEtaCorrection(etacorrection);
218 }
219 }
220 pid->ConfigureTPCdefaultCut(cutmodel, params, TPCu);
221
222 if (usetof){
223 pid->ConfigureTOF(TOFs);
224 AliHFEpidTOF *tofpid = pid->GetDetPID(AliHFEpid::kTOFpid);
225 if (kTOFmis){
226 tofpid->SetRejectTOFmismatch();
227 }
228 }
229
230 if(TRDtl>0){
231 AliHFEpidTRD *trdpid = pid->GetDetPID(AliHFEpid::kTRDpid);
232 trdpid->SetTRD2DPID();
233 trdpid->SetElectronEfficiency(eeff[TRDeff]); // efficiency
234 trdpid->SetNTracklets(TRDtl); // ntracklets threshold
235 trdpid->SetCutNTracklets(TRDtl, kTRUE);
236 }
237
238 // To make different upper TOF cut to see contamination effect
239 // The below two lines should be removed after this check
240 //AliHFEpidTOF *tofpid = pid->GetDetPID(AliHFEpid::kTOFpid);
241 //if(TOFs<3.) tofpid->SetTOFnSigmaBand(-3,TOFs); //only to check the assymmetric tof cut
242
243 if(kAnalyseTaggedTracks){
244 AliHFEcuts *v0trackCuts = new AliHFEcuts("V0trackCuts", "Track Cuts for tagged track Analysis");
245 v0trackCuts->CreateStandardCuts();
246 v0trackCuts->SetMinNClustersTPC(TPCcl);
247 v0trackCuts->SetMinNClustersTPCPID(TPCclPID);
248 v0trackCuts->SetMinRatioTPCclusters(0.6);
249 v0trackCuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
250 v0trackCuts->SetMinNClustersITS(1);
251 v0trackCuts->SetCutITSpixel(AliHFEextraCuts::kFirst);
252 v0trackCuts->SetCheckITSLayerStatus(kFALSE);
253 v0trackCuts->UnsetVertexRequirement();
254 //hfecuts->SetSigmaToVertex(10);
255 if(usetof) v0trackCuts->SetTOFPIDStep(kTRUE);
84e1e407 256 if(TRDtl>0)v0trackCuts->SetMinNTrackletsTRD(TRDtl,kTRUE); // condition for TRD tracklets
d44e3c84 257 v0trackCuts->SetQAOn();
258 task->SwitchOnPlugin(AliAnalysisTaskHFE::kTaggedTrackAnalysis);
259 task->SetTaggedTrackCuts(v0trackCuts);
260 task->SetCleanTaggedTrack(kTRUE);
261 }
262
263 // QA
264 printf("task %p\n", task);
265 task->SetQAOn(AliAnalysisTaskHFE::kPIDqa);
266 task->SetQAOn(AliAnalysisTaskHFE::kMCqa);
267 //task->SwitchOnPlugin(AliAnalysisTaskHFE::kIsElecBackGround);
268 //task->SwitchOnPlugin(AliAnalysisTaskHFE::kSecVtx);
269 task->SwitchOnPlugin(AliAnalysisTaskHFE::kDEstep);
270 if(useMC && mcstr) task->SetDebugStreaming();
271
272 printf("*************************************\n");
273 printf("Configuring standard Task:\n");
274 task->PrintStatus();
275 pid->PrintStatus();
276 printf("*************************************\n");
277 return task;
278}