]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/ConfigBJpsi_ff_PbPbFilter.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / ConfigBJpsi_ff_PbPbFilter.C
CommitLineData
15f4cb18 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2
3void SetupTrackCuts(Bool_t isESD, AliDielectron *die, Int_t cutDefinition);
4void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
5
6void AddMCSignals(AliDielectron *die);
7void SetEtaCorrection();
8
9TString names=("TOFTRDany");
10enum { kTOFTRD};
11
12TObjArray *arrNames=names.Tokenize(";");
13const Int_t nDie=arrNames->GetEntries();
14
15Bool_t hasMC=kFALSE;
16
17AliDielectron* ConfigBJpsi_ff_PbPbFilter(Int_t cutDefinition, Bool_t isMC=kFALSE)
18{
19 //
20 // Setup the instance of AliDielectron
21 //
22
23
24 // MC event handler?
25 hasMC=isMC;
26 //(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
27
28 //ESD handler?
29 Bool_t isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class());
30
31
32 // create the actual framework object
33 TString name=Form("%02d",cutDefinition);
34 if (cutDefinition<arrNames->GetEntriesFast()){
35 name=arrNames->At(cutDefinition)->GetName();
36 }
37 AliDielectron *die = new AliDielectron(Form("%s",name.Data()),
38 Form("Track cuts: %s",name.Data()));
39
40 // Monte Carlo Signals and TRD efficiency tables
41 if(hasMC) {
42 AddMCSignals(die);
43
44 // trd tables
45 TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root";
46 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
47 if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root";
48
49 if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data())))
50 Error("ConfigPbPb","PID table not found: %s",pidTab.Data());
51 else
52 die->SetTRDcorrectionFilename(pidTab.Data());
53 }
54
55 // cut setup
56 SetupTrackCuts(isESD,die,cutDefinition);
57 SetupPairCuts(die,cutDefinition);
58
59 // histogram setup
60 if(cutDefinition == kTOFTRD)
61 InitHistograms(die,cutDefinition);
62
63 // setup eta correction
64 SetEtaCorrection();
65
66 return die;
67}
68
69//______________________________________________________________________________________
70void SetupTrackCuts(Bool_t isESD, AliDielectron *die, Int_t cutDefinition)
71{
72 //
73 // Setup the track cuts
74 //
75
76 // Quality cuts
77 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
78 die->GetTrackFilter().AddCuts(cuts);
79
80 //Pt cut, should make execution a bit faster
81 AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.85","Pt>.85");
82 pt->AddCut(AliDielectronVarManager::kPt,0.85,1e30);
83 cuts->AddCut(pt);
84
85 // track cuts ESD and AOD
86 AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
87 varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
88 varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
89 varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
90 varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
91 varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
92 varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0);
93
94 AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
95 varCuts->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.01,1.5); //ITS(0-1) = SPDany
96
97 cuts->AddCut(varCuts);
98
99 trkCuts->SetRequireITSRefit(kTRUE);
100 trkCuts->SetRequireTPCRefit(kTRUE);
101 cuts->AddCut(trkCuts);
102
103 //Do we have an MC handler?
104 // Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
105
106 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
107 AliDielectronPID *pid = new AliDielectronPID("PID","PID");
108
109 ////////////////////////////////// DATA
110 if(!hasMC) {
111
112 pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.0,3.0,0.,0.,kTRUE);
113 pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.0,3.0,0.,0.,kTRUE);
114 }
115
116 ////////////////////////////////// MC
117 if(hasMC) {
118
119 // electron
120 Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5;
121 Double_t resolution=0.0549;
122 Double_t BBpro[5] = {0};
123 Double_t BBpio[5] = {0};
124
125 for(Int_t icent=0; icent<8; icent++) {
126
127 switch (icent) {
128 case 0: // 0-10%
129 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
130 BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11; BBpio[3] = 5.27988; BBpio[4] = 4.3108;
131 break;
132 case 1: // 10-20%
133 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
134 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
135 break;
136 case 2: // 20-30%
137 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
138 BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11; BBpio[3] = 5.74458; BBpio[4] = 4.32459;
139 break;
140 case 3: // 30-40%
141 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
142 BBpio[0] = 0.026294; BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11; BBpio[3] = 5.28808; BBpio[4] = 4.31301;
143 break;
144 case 4: // 40-50%
145 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
146 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
147 break;
148 case 5: // 50-60%
149 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
150 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
151 break;
152 case 6: // 60-70%
153 BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848;
154 BBpio[0] = 0.026302; BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11; BBpio[3] = 5.2465; BBpio[4] = 4.31094;
155 break;
156 case 7: // 70-80%
157 BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999;
158 BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363;
159 break;
160 case 8: // 80-90%
161 BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11; BBpro[3] = 2.07912; BBpro[4] = 5.99986;
162 BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093;
163 break;
164 case 9: // 90-100%
165 BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11; BBpro[3] = 3.2431; BBpro[4] = 5.93388;
166 BBpio[0] = 0.027079; BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11; BBpio[3] = 9.61382; BBpio[4] = 5.99372;
167 break;
168 }
169
170
171 TF1 *ffPro=new TF1(Form("fBethe%d_c%d",AliPID::kProton,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaP,resolution, AliPID::ParticleMass(AliPID::kProton), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
172
173 TF1 *ffPio=new TF1(Form("fBethe%d_c%d",AliPID::kPion,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaPi,resolution, AliPID::ParticleMass(AliPID::kPion), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.);
174
175 TString list=gSystem->Getenv("LIST");
176
177 //LHC11a10b
178 if (list.Contains("LHC11a10b") || list.IsNull()) {
179 printf("LHC11a10b parameters\n");
180 ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]);
181 ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]);
182
183 // proton cut
184 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10,
185 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
186 // pion cut
187 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10,
188 kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality);
189 }
190 }
191
192 // shifts for the nSigma electrons
193 TGraph* nSigmaCorrection = new TGraph();
194 // LHC11a10b
195 if (list.Contains("LHC11a10b") || list.IsNull()) {
196 nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28));
197 nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28));
198 pid->SetCorrGraph(nSigmaCorrection);
199 }
200
201 } //hasMC
202
203 ////////////////////////////////// DATA + MC
204 // pid cuts TPC + TOF
205 pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-4.,4.);
206 pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable);
207
208 cuts->AddCut(pid);
209 /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
210
211
212 // exclude conversion electrons selected by the tender
213 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
214 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
215 cuts->AddCut(noconv);
216
217}
218
219//______________________________________________________________________________________
220void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
221{
222 //
223 // Setup the pair cuts
224 //
225
226 // conversion rejection
227 Double_t gCut = 0.05; // default
228
229 AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
230 gammaCut->AddCut(AliDielectronVarManager::kM,0.,gCut);
231 die->GetPairPreFilter().AddCuts(gammaCut);
232
233
234}
235
236//______________________________________________________________________________________
237void InitHistograms(AliDielectron *die, Int_t cutDefinition)
238{
239 //
240 // Initialise the histograms
241 //
242 // Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
243
244 //Setup histogram Manager
245 AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
246
247
248 //add histograms to event class
249 histos->AddClass("Event");
250 histos->AddClass("Event_noCuts");
251 histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)",
252 300,-15.,15.,AliDielectronVarManager::kZvPrim);
253 histos->UserHistogram("Event_noCuts","VtxZ","Vertex Z;z (cm)",
254 300,-15.,15.,AliDielectronVarManager::kZvPrim);
255
256 histos->UserHistogram("Event","Centrality","Centrality;centrality (%)",
257 20,0.,100.,AliDielectronVarManager::kCentrality);
258
259 histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0",
260 500,0.,25000., AliDielectronVarManager::kMultV0);
261 histos->UserHistogram("Event","Multiplicity_nTracks","Multiplicity V0 vs #tracks; #tracks; Multiplicity V0;",
262 500,0.,25000.,500,0.,25000.,AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0);
263
264 histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0",
265 10,0.,100., 500,0.,500.,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0);
266 histos->UserProfile("Event","Cent_Nacc",
267 "accepted tracks;centrality (%)",
268 AliDielectronVarManager::kNacc,
269 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
270 AliDielectronVarManager::kCentrality);
271 histos->UserProfile("Event","Cent_NVtxContrib",
272 "number of vertex contributors;centrality (%)",
273 AliDielectronVarManager::kNVtxContrib,
274 "0.,5.,10.,20.,40.,50.,60.,80.,100.",
275 AliDielectronVarManager::kCentrality);
276
277
278
279
280
281 //Initialise histogram classes
282 histos->SetReservedWords("Track;Pair");
283
284
285 //Pair classes
286 // to fill also mixed event histograms loop until 10
287 for (Int_t i=0; i<3; ++i){
288 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
289 }
290
291 if(cutDefinition <= kTOFTRD) {
292
293 //legs from pair
294 for (Int_t i=0; i<3; ++i){
295 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
296 }
297
298 //Track classes
299 //to fill also track info from 2nd event loop until 2
300 for (Int_t i=0; i<2; ++i){
301 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
302 }
303
304 //add histograms to Track classes
305 //histos->UserHistogram("Track","TOFbit","TOFbit;bit;#tracks",19,-9.5,9.5,AliDielectronVarManager::kTOFPIDBit);
306 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",
307 400,0,20.,
308 AliDielectronVarManager::kPt);
309
310 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",
311 160,-0.5,159.5,
312 AliDielectronVarManager::kNclsTPC);
313 histos->UserHistogram("Track","TPCsignalN","Number of Clusters TPC;TPC number clusteres;#tracks",
314 160,-0.5,159.5,
315 AliDielectronVarManager::kTPCsignalN);
316
317 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
318 500,-1.,1.,
319 AliDielectronVarManager::kImpactParXY);
320 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
321 600,-3.,3.,
322 AliDielectronVarManager::kImpactParZ);
323
324 histos->UserHistogram("Track","Centrality_Eta_Nsigma","Cent_Eta_nSigma; Centrality; #eta; TPCnSigma_Electron",20,0.,100.,200,-1.,1.,200,-10.,10.,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
325
326 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
327 200,-1,1,200,0,6.285,
328 AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
329
330 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
331 400,0.2,20.,200,0.,200.,
332 AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
333
334 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",400,0.2,20.,200,-10.,10., AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
335
336 histos->UserHistogram("Track","nSigmaTOF_P","TOF sigmas Electrons;P [GeV];TOF number of sigmas Electrons;#tracks", 400,0.2,20.,200,-10.,10., AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
337
338 histos->UserHistogram("Track","Ncl",";Number clusters TPC;Number clusters TPC",
339 160,-0.5,159.5,
340 AliDielectronVarManager::kNclsTPC);
341 histos->UserHistogram("Track","NclFr",";Number of findable clusters (robust);Number findable clusters TPC",
342 160,-0.5,159.5,
343 AliDielectronVarManager::kNFclsTPCr);
344 histos->UserHistogram("Track","Ncl_NclFr","Number of (findable) clusters TPC;found clusters;findable clusters",
345 160,-0.5,159.5,160,-0.5,159.5,
346 AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
347 histos->UserHistogram("Track","NtrklTRD",";Number tracklets TRD for pid;Number tracklets TRD",
348 8,-0.5,7.5,
349 AliDielectronVarManager::kTRDpidQuality);
350
351 //add histograms to Pair classes
352 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
353 300,.0,300*0.04,
354 AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2
355 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
356 100,-1.,1.,
357 AliDielectronVarManager::kY);
358 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
359 100,0.,3.15,
360 AliDielectronVarManager::kOpeningAngle);
361 histos->UserHistogram("Pair","Chi2NDF","#chi^{2}/NDF;#chi^{2}/NDF",
362 100,0.,20,
363 AliDielectronVarManager::kChi2NDF);
364
365 histos->UserHistogram("Pair","PseudoProperTime","Pseudoproper decay length; pseudoproper-decay-length[#mum];Entries/40#mum",
366 150,-0.3.,0.3,AliDielectronVarManager::kPseudoProperTime);
367
368
369 }
370
371 die->SetHistogramManager(histos);
372}
373
374
375void AddMCSignals(AliDielectron *die){
376 //Do we have an MC handler?
377 //Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
378 if (!hasMC) return;
379
380 AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi");
381 inclusiveJpsi->SetLegPDGs(11,-11);
382 inclusiveJpsi->SetMotherPDGs(443,443);
383 inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
384 inclusiveJpsi->SetFillPureMCStep(kTRUE);
385 inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
386 inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
387 die->AddSignalMC(inclusiveJpsi);
388
389 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
390 promptJpsi->SetLegPDGs(11,-11);
391 promptJpsi->SetMotherPDGs(443,443);
392 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
393 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
394 promptJpsi->SetFillPureMCStep(kTRUE);
395 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
396 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
397 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
398 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
399 die->AddSignalMC(promptJpsi);
400
401 AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi");
402 beautyJpsi->SetLegPDGs(11,-11);
403 beautyJpsi->SetMotherPDGs(443,443);
404 beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
405 beautyJpsi->SetGrandMotherPDGs(500,500);
406 beautyJpsi->SetFillPureMCStep(kTRUE);
407 beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
408 beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
409 beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
410 die->AddSignalMC(beautyJpsi);
411
412 AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi
413 directJpsi->SetLegPDGs(11,-11);
414 directJpsi->SetMotherPDGs(443,443);
415 directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
416 directJpsi->SetFillPureMCStep(kTRUE);
417 directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
418 directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect);
419 directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
420 directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
421 die->AddSignalMC(directJpsi);
422}
423
424void SetEtaCorrection()
425{
426
427 if (AliDielectronPID::GetEtaCorrFunction()) return;
428
429 //TString list=gSystem->Getenv("LIST");
430 TString list="LHC11h.pass2";
431
432 //TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root";
433 //TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
434 //if (trainRoot.IsNull())
435 TString etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root";
436 if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){
437 Error("ConfigPbPb","Eta map not found: %s",etaMap.Data());
438 return;
439 }
440
441 TFile f(etaMap.Data());
442 if (!f.IsOpen()) return;
443 TList *keys=f.GetListOfKeys();
444
445
446 for (Int_t i=0; i<keys->GetEntries(); ++i){
447 TString kName=keys->At(i)->GetName();
448 TPRegexp reg(kName);
449 if (reg.MatchB(list)){
450 printf("Using Eta Correction Function: %s\n",kName.Data());
451 AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data()));
452 }
453 }
454}
455