]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/ConfigTakuLMEEPbPb2011.C
New macros for the kaon train
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ConfigTakuLMEEPbPb2011.C
1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
3 void EnableMC();
4 void SetSignals(AliDielectron *die);
5
6 //////////////////////////////////////////////////////
7 ///// lists of cuts 
8 ////  |cutDefinition | CENT | PID | Pair |
9 ///// | 0 | - | - | - |
10 ///// | 1 | 0-10 | kPbPb2011TPCandTOFwide | - | 
11 ///// | 2 | 10-30 | kPbPb2011TPCandTOFwide | - | 
12 ///// | 3 | 30-50 | kPbPb2011TPCandTOFwide | - | 
13 ///// | 4 | 0-10 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns | 
14 ///// | 5 | 10-30 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns | 
15 ///// | 6 | 30-50 | kPbPb2011TPCandTOFwide | OP & SetPreFilterAllSigns | 
16 ///// | 7 | 0-10 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns | 
17 ///// | 8 | 10-30 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns | 
18 ///// | 9 | 30-50 | kPbPb2011TPCandTOFwide | Phiv & SetPreFilterAllSigns | 
19 ///// | 10 | 0-10 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns | 
20 ///// | 11 | 10-30 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns | 
21 ///// | 12 | 30-50 | kPbPb2011TPCandTOFwide | OP & No SetPreFilterAllSigns | 
22 ///// | 13 | 0-10 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns | 
23 ///// | 14 | 10-30 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns | 
24 ///// | 15 | 30-50 | kPbPb2011TPCandTOFwide | Phiv & No SetPreFilterAllSigns | 
25 //////////////////////////////////////////////////////////
26
27
28 TString names=("noPairing;TPCTOFCentnoPair;TPCTOFSemiCent1noPair;TPCTOFSemiCent2noPair;TPCTOFCentOpPair;TPCTOFSemiCent1OpPair;TPCTOFSemiCent2OpPair;TPCTOFCentPvPair;TPCTOFSemiCent1PvPair;TPCTOFSemiCent2PvPair;TPCTOFCentOpPair2;TPCTOFSemiCent1OpPair2;TPCTOFSemiCent2OpPair2;TPCTOFCentPvPair2;TPCTOFSemiCent1PvPair2;TPCTOFSemiCent2PvPair2");
29                 
30 TObjArray *arrNames=names.Tokenize(";");
31 const Int_t nDie=arrNames->GetEntries();
32
33 Bool_t MCenabled=kFALSE;
34
35
36 AliDielectron* ConfigTakuLMEEPbPb2011(Int_t cutDefinition, Bool_t withMC=kFALSE, Bool_t CFenable=kFALSE)
37 {
38
39   Int_t selectedPID=-1;
40   Int_t selectedCentrality=-1;
41   Int_t selectedPairCut=-1;
42   Bool_t rejectionStep=kFALSE;
43   Bool_t HasPairCut = kFALSE;
44   LMEECutLibTaku*  LMCL = new LMEECutLibTaku();
45
46   //
47   // Setup the instance of AliDielectron
48   //
49
50   MCenabled=withMC;
51   // create the actual framework object
52
53   TString name=Form("%02d",cutDefinition);
54   if ((cutDefinition)<arrNames->GetEntriesFast()){
55     name=arrNames->At((cutDefinition))->GetName();
56   }
57   
58   //thisCut only relevant for MC:
59   AliDielectron *die =
60     new AliDielectron(Form
61                       ("%s",name.Data()),
62                       Form("Track cuts: %s",name.Data()));
63   
64   
65   if (MCenabled){
66     die->SetHasMC(kTRUE);
67   }
68   
69   //Setup AnalysisSelection:
70   if (cutDefinition==0) {
71     //not yet implemented
72   }
73   //////////////////////////////////////////////
74   else if (cutDefinition==1) {
75     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
76     selectedCentrality = LMEECutLibTaku::kPbPb2011Central;
77     rejectionStep = kFALSE;
78     HasPairCut = kFALSE;
79   }
80   else if (cutDefinition==2) {
81     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
82     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral1;
83     rejectionStep = kFALSE;
84     HasPairCut = kFALSE;
85   }
86   else if (cutDefinition==3) {
87     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
88     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral2;
89     rejectionStep = kFALSE;
90     HasPairCut = kFALSE;
91   }
92   //////////////////////////////////////////////
93   else if (cutDefinition==4) {
94     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
95     selectedCentrality = LMEECutLibTaku::kPbPb2011Central;
96     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
97     rejectionStep = kTRUE;
98     HasPairCut =  kTRUE;
99   }
100   else if (cutDefinition==5) {
101     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
102     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral1;
103     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
104     rejectionStep = kTRUE;
105     HasPairCut =  kTRUE;
106   }
107   else if (cutDefinition==6) {
108     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
109     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral2;
110     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
111     rejectionStep = kTRUE;
112     HasPairCut =  kTRUE;
113   }
114   //////////////////////////////////////////////
115   else if (cutDefinition==7) {
116     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
117     selectedCentrality = LMEECutLibTaku::kPbPb2011Central;
118     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
119     rejectionStep = kTRUE;
120     HasPairCut =  kTRUE;
121   }
122   else if (cutDefinition==8) {
123     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
124     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral1;
125     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
126     rejectionStep = kTRUE;
127     HasPairCut =  kTRUE;
128   }
129   else if (cutDefinition==9) {
130     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
131     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral2;
132     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
133     rejectionStep = kTRUE;
134     HasPairCut =  kTRUE;
135   }
136   //////////////////////////////////////////////
137   else if (cutDefinition==10) {
138     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
139     selectedCentrality = LMEECutLibTaku::kPbPb2011Central;
140     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
141     rejectionStep = kFALSE;
142     HasPairCut =  kTRUE;
143   }
144   else if (cutDefinition==11) {
145     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
146     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral1;
147     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
148     rejectionStep = kFALSE;
149     HasPairCut =  kTRUE;
150   }
151   else if (cutDefinition==12) {
152     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
153     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral2;
154     selectedPairCut = LMEECutLibTaku::kPbPb2011OP;
155     rejectionStep = kFALSE;
156     HasPairCut =  kTRUE;
157   }
158   //////////////////////////////////////////////
159   else if (cutDefinition==13) {
160     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
161     selectedCentrality = LMEECutLibTaku::kPbPb2011Central;
162     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
163     rejectionStep = kFALSE;
164     HasPairCut =  kTRUE;
165   }
166   else if (cutDefinition==14) {
167     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
168     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral1;
169     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
170     rejectionStep = kFALSE;
171     HasPairCut =  kTRUE;
172   }
173   else if (cutDefinition==15) {
174     selectedPID = LMEECutLibTaku::kPbPb2011TPCandTOFwide;
175     selectedCentrality = LMEECutLibTaku::kPbPb2011SemiCentral2;
176     selectedPairCut = LMEECutLibTaku::kPbPb2011Phiv;
177     rejectionStep = kFALSE;    
178     HasPairCut =  kTRUE;
179   }
180   //////////////////////////////////////////////
181
182
183
184   //Legacy cuts, check consistence w/ 1 & 4, then remove
185   /*
186   else if (cutDefinition==7) {
187     selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
188     selectedCentrality = LMEECutLib::kPbPb2011Central;
189     rejectionStep = kFALSE;
190   }
191   else if (cutDefinition==8) {
192     selectedPID = LMEECutLib::kPbPb2011TPCandTOF;
193     selectedCentrality = LMEECutLib::kPbPb2011Central;
194     rejectionStep = kTRUE;
195   }
196   */
197   else Semi{
198     cout << " =============================== " << endl;
199     cout << " ==== INVALID CONFIGURATION ==== " << endl;
200     cout << " =============================== " << endl;
201   }
202
203
204   //Now configure task
205
206   /*
207   if (rejectionStep) {
208     die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
209     die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
210     die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
211   }
212   else { //No Prefilter, no Pairfilter
213   }
214   */
215
216
217   //Apply correct Pre-Filter Scheme, if necessary
218   die->SetPreFilterAllSigns(rejectionStep);
219
220   die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
221   die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
222
223   if(HasPairCut==kTRUE){
224     if(rejectionStep==kTRUE){
225       die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
226       die->GetPairPreFilter().AddCuts( LMCL->GetPairPreFilterCuts(selectedPairCut));
227       die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));
228     }else{
229       die->GetPairFilter().AddCuts( LMCL->GetPairCuts(selectedPairCut));
230     }
231   }
232
233
234
235
236   AliDielectronTrackRotator *rot= 0x0;
237   /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
238   die->SetTrackRotator(rot);
239    */
240   AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
241   die->SetMixingHandler(mix);
242
243   // histogram setup
244   // only if an AliDielectronHistos object is attached to the
245   // dielectron framework histograms will be filled
246   //
247   InitHistograms(die,cutDefinition);
248
249   // the last definition uses no cuts and only the QA histograms should be filled!
250   if (CFenable) {
251     SetSignals(die);
252     InitCF(die,cutDefinition);
253   }
254   return die;
255 }
256
257 //______________________________________________________________________________________
258
259 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
260 {
261   //
262   // Initialise the histograms
263   //
264
265   //Setup histogram Manager
266   AliDielectronHistos *histos=
267         new AliDielectronHistos(die->GetName(),
268                 die->GetTitle());
269   //Initialise histogram classes
270   histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair:MyPair:MyPairV0");
271
272   //Event class
273 //  if (cutDefinition==nDie-1) 
274   histos->AddClass("Event");
275
276   //Track classes
277   //to fill also track info from 2nd event loop until 2
278   for (Int_t i=0; i<2; ++i){
279     histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
280   }
281   
282   //Pair classes
283   // to fill also mixed event histograms loop until 10
284   for (Int_t i=0; i<3; ++i){
285     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
286   }
287   
288   //ME and track rot
289   if (die->GetMixingHandler()) {
290     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
291     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
292     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
293     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
294   }
295   if (die->GetTrackRotator()) {
296     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
297   }
298   
299   //PreFilter Classes
300   //to fill also track info from 2nd event loop until 2
301   for (Int_t i=0; i<2; ++i){
302     histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
303   }
304   
305   
306   //Create Classes for Rejected Tracks/Pairs:
307   for (Int_t i=0; i<2; ++i){
308     histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
309   }
310   for (Int_t i=0; i<3; ++i){
311     histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
312   }
313   
314   
315   //My Pair classes
316   // to fill also mixed event histograms loop until 10
317
318   const char* fgkPairClassNames[7] = {
319     "unlike",
320     "like_pp",
321     "like_ee",
322     "mixunlike_pe",
323     "mixunlike_ep",
324     "mixlike_pp",
325     "mixlike_ee"
326   };
327   for (Int_t i=0; i<7; ++i){
328     histos->AddClass(Form("MyPair_%s",fgkPairClassNames[i]));
329   }
330   for (Int_t i=0; i<7; ++i){
331     histos->AddClass(Form("MyPairV0_%s",fgkPairClassNames[i]));
332   }
333
334
335   /*
336   //track rotation
337
338   histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
339   histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
340   */
341   //add histograms to event class
342   histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
343                         1,0.,1.,AliDielectronVarManager::kNevents);
344   //histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
345   //AliDielectronVarManager::kCentrality);
346   histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]",100, 0, 100,
347                         AliDielectronVarManager::kCentrality);
348   
349
350   //add histograms to Track classes, also fills RejTrack
351   histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
352   histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
353   histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
354
355   histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
356           400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
357
358   histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
359           400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
360
361   histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
362           400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
363   histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
364           400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
365   histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
366           400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
367
368   histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
369           400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
370   histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
371           400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
372
373   histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
374           400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
375   histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
376           400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
377
378   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
379                         200,-1,1,200,0,6.3,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
380
381   histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
382
383   histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
384
385   histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
386
387   histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
388
389   //add histograms to Pair classes, also fills RejPair
390   histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
391                         1000,0.0,5.00,AliDielectronVarManager::kM);
392   histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
393                         100,-2.,2.,AliDielectronVarManager::kY);
394   histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
395                         100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
396   //2D Histo Plot
397   histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
398                         1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
399   histos->UserHistogram("Pair","InvMassPhivPair","PhivPair vs Inv. Mass;Inv. Mass [GeV]; Phiv",
400                         1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
401   histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV] ; OpeningAngle[rad]",
402                         1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
403
404   //add histograms to Track classes
405   histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
406
407   histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
408           400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
409
410   histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
411           400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
412
413   histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
414                         200,-1,1,200,0,6.3,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
415
416   histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
417
418   histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
419   histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
420   histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
421
422   histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
423                         400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
424   histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
425                         400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
426   histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
427                         400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
428   histos->UserHistogram("Pre","TPCnSigmaPro_P","TPC number of sigmas Proton;P [GeV];TPC number of sigmas Pions;#tracks",
429                         400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,kTRUE);
430
431
432 //  histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
433
434
435   ////////////////////////////////////////////////////////////////////////////
436   ////////////////////////////////////////////////////////////////////////////
437   ////// my own histograms 
438   histos->UserHistogram("MyPair","InvMyMassPairPt","Inv.MyMass vs PairPt;Inv. MyMass [GeV]; pT [GeV]",
439                         1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
440
441   histos->UserHistogram("MyPair","InvMyMassOpeningAngle","Opening Angle vs Inv.MyMass;Inv. MyMass [GeV] ; OpeningAngle[rad]",
442                         1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
443
444   histos->UserHistogram("MyPair","InvMyMassPsiPair","PsiPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv",
445                         1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPsiPair);
446
447   histos->UserHistogram("MyPair","InvMyMassPhivPair","PhivPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv",
448                         1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
449
450   histos->UserHistogram("MyPair","InvMyMassR","R vs Inv.MyMass;Inv. MyMass [GeV]; R[cm]",
451                         1000,0.0,5.0,200,0.,30,AliDielectronVarManager::kM,AliDielectronVarManager::kR);
452
453   histos->UserHistogram("MyPair","InvMyMassdPhi","dPhi of pairs vs Inv.MyMass;Inv. MyMass [GeV]; dPhi[rad]",
454                         1000,0.0,5.0,200,0.,3.1415,AliDielectronVarManager::kM,AliDielectronVarManager::kCosPointingAngle);
455
456   histos->UserHistogram("MyPair","PhivR","R vs Phiv; R[cm]; Phiv[rad]",
457                         200,0.,30, 200,0,4, AliDielectronVarManager::kR,AliDielectronVarManager::kPsiPair);
458   
459
460   histos->UserHistogram("MyPairV0","InvV0MyMassPairPt","Inv.MyMass vs PairPt;Inv. MyMass [GeV]; pT [GeV]",
461                         1000,0.0,5.0,200,0.,20.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
462
463   histos->UserHistogram("MyPairV0","InvV0MyMassOpeningAngle","Opening Angle vs Inv.MyMass;Inv. MyMass [GeV]; OA[rad]",
464                         1000,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
465
466   histos->UserHistogram("MyPairV0","InvV0MyMassPsiPair","PsiPair vs Inv.MyMass;Inv. MyMass [GeV]; Psi[rad]",
467                         1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPsiPair);
468
469   histos->UserHistogram("MyPairV0","InvV0MyMassPhivPair","PhivPair vs Inv.MyMass;Inv. MyMass [GeV]; Phiv [rad]",
470                         1000,0.0,5.0,200,0.,4,AliDielectronVarManager::kM,AliDielectronVarManager::kPhivPair);
471
472   histos->UserHistogram("MyPairV0","InvV0MyMassR","R vs Inv.MyMass;Inv. MyMass [GeV]; R[cm]",
473                         1000,0.0,5.0,200,0.,30,AliDielectronVarManager::kM,AliDielectronVarManager::kR);
474   histos->UserHistogram("MyPairV0","PsiPairR","R vs PsiPair; R[cm]; PsiPair[rad]",
475                         200,0.,30, 200,0,4, AliDielectronVarManager::kR,AliDielectronVarManager::kPsiPair);
476   histos->UserHistogram("MyPairV0","InvV0MyMassdPhi","dPhi of pairs vs Inv.MyMass;Inv. MyMass [GeV]; dPhi[rad]",
477                         1000,0.0,5.0,200,0.,3.1415,AliDielectronVarManager::kM,AliDielectronVarManager::kCosPointingAngle);
478   
479   ////////////////////////////////////////////////////////////////////////////
480   ////////////////////////////////////////////////////////////////////////////
481
482
483
484
485
486
487   die->SetHistogramManager(histos);
488 }
489
490
491 void InitCF(AliDielectron* die, Int_t cutDefinition)
492 {
493   //
494   // Setupd the CF Manager if needed
495   //
496
497   AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
498
499   //pair variables
500   cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
501   cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);
502   cf->AddVariable(AliDielectronVarManager::kM, 1000,0,5.00); //5Mev Steps
503   cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.);
504   cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
505
506   cf->AddVariable(AliDielectronVarManager::kCentrality,100, 0, 100);
507   cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2);
508   cf->AddVariable(AliDielectronVarManager::kPsiPair,320,0.,3.2);
509   //leg variables
510   cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
511   cf->AddVariable(AliDielectronVarManager::kPt,200,0.,20.,kTRUE);
512   cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
513   cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
514   cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,100,-10.0.,10.,kTRUE);
515   cf->AddVariable(AliDielectronVarManager::kITSnSigmaEle,100,-10.0.,10.,kTRUE);
516   cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE);
517   //only in this case write MC truth info
518   if (MCenabled) {
519     cf->SetStepForMCtruth();
520     //cf->SetStepsForMCtruthOnly();
521     cf->SetStepForAfterAllCuts();
522     cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2);
523     //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
524     //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
525   }
526
527   cf->SetStepsForSignal();
528   die->SetCFManagerPair(cf);
529
530
531
532   /*
533  AliDielectronSignalMC* lowMassDiele=new
534     AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
535   lowMassDiele->SetLegPDGs(11,-11);
536   lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
537   lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
538       AliDielectronSignalMC::kPrimary);
539   lowMassDiele->SetFillPureMCStep(kTRUE);
540   die->AddSignalMC(lowMassDiele);
541
542   AliDielectronSignalMC* secondary=new
543     AliDielectronSignalMC("secondary","secondary electrons pairs");
544   secondary->SetLegPDGs(11,-11);
545   secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
546   secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
547       AliDielectronSignalMC::kSecondary);
548   die->AddSignalMC(secondary);
549
550
551   AliDielectronSignalMC* finalState=new
552     AliDielectronSignalMC("finalState","finalState electrons pairs");
553   finalState->SetLegPDGs(11,-11);
554   finalState->SetCheckBothChargesLegs(kTRUE,kTRUE);
555   finalState->SetLegSources(AliDielectronSignalMC::kFinalState,
556       AliDielectronSignalMC::kFinalState);
557   die->AddSignalMC(finalState);
558   */
559
560 }
561
562 //--------------------------------------
563 void EnableMC() {
564   MCenabled=kTRUE;
565 }
566
567
568 //--------------------------------------
569 void SetSignals(AliDielectron *die)
570 {
571
572
573   AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi");   // prompt J/psi (not from beauty decays)
574   promptJpsi->SetLegPDGs(11,-11);
575   promptJpsi->SetMotherPDGs(443,443);
576   promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE);   // not from beauty hadrons
577   promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
578   promptJpsi->SetFillPureMCStep(kTRUE);
579   promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
580   promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
581   promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
582   promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
583   die->AddSignalMC(promptJpsi);
584
585   // physical backgrounds (electrons from other sources)
586   AliDielectronSignalMC* diEleContinuum = new AliDielectronSignalMC("diEleContinuum","di-electron continuum");     // all di-electrons originating in the collision
587   diEleContinuum->SetLegPDGs(11,-11);
588   diEleContinuum->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
589   diEleContinuum->SetCheckBothChargesLegs(kTRUE,kTRUE);
590   die->AddSignalMC(diEleContinuum);
591   
592   AliDielectronSignalMC* diEleCharm = new AliDielectronSignalMC("diEleCharm","di-electrons from charm");  // dielectrons originating from charm hadrons (not neccessary from same mother)
593   diEleCharm->SetLegPDGs(11,-11);
594   diEleCharm->SetMotherPDGs(403,403);
595   diEleCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
596   diEleCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
597   diEleCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
598   die->AddSignalMC(diEleCharm);
599
600   AliDielectronSignalMC* diEleOpenCharm = new AliDielectronSignalMC("diEleOpenCharm","di-electrons from open charm");  // dielectrons originating from open charm hadrons
601   diEleOpenCharm->SetLegPDGs(11,-11);
602   diEleOpenCharm->SetMotherPDGs(402,402);
603   diEleOpenCharm->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
604   diEleOpenCharm->SetCheckBothChargesLegs(kTRUE,kTRUE);
605   diEleOpenCharm->SetCheckBothChargesMothers(kTRUE,kTRUE);
606   die->AddSignalMC(diEleOpenCharm);
607
608
609   // background from secondary electrons
610   AliDielectronSignalMC* secondaryElectrons = new AliDielectronSignalMC("secondaryElectrons","Secondary electrons");   // all di-electrons from secondary electrons (interaction with detector)
611   secondaryElectrons->SetLegPDGs(11,-11);
612   secondaryElectrons->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
613   secondaryElectrons->SetCheckBothChargesLegs(kTRUE,kTRUE);
614   die->AddSignalMC(secondaryElectrons);
615
616   /*
617   AliDielectronSignalMC* primarySecElePairs = new AliDielectronSignalMC("primarySecElePairs","Primary+Secondary electron pairs");  // primary-secondary pairs
618   primarySecElePairs->SetLegPDGs(11,-11);
619   primarySecElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
620   primarySecElePairs->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kSecondary);
621   die->AddSignalMC(primarySecElePairs);
622   */
623
624   AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs");      // pairs made from conversion (may be also from 2 different conversions)
625   conversionElePairs->SetLegPDGs(11,-11);
626   conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
627   conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary);
628   conversionElePairs->SetMotherPDGs(22,22);
629   die->AddSignalMC(conversionElePairs);
630
631   // misidentification
632   /*
633   AliDielectronSignalMC* allEleMisIdPairs = new AliDielectronSignalMC("allEleMisIdPairs","all electron+misid. pairs");  // one true electron + a mis-id electron (all sources included)
634   allEleMisIdPairs->SetLegPDGs(11,11,kFALSE,kTRUE);
635   allEleMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
636   die->AddSignalMC(allEleMisIdPairs);
637
638   AliDielectronSignalMC* allMisIdMisIdPairs = new AliDielectronSignalMC("allMisIdMisIdPairs","all misid.+misid. pairs");  // mis-id + mis-id
639   allMisIdMisIdPairs->SetLegPDGs(11,11,kTRUE,kTRUE);
640   allMisIdMisIdPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
641   die->AddSignalMC(allMisIdMisIdPairs);
642
643   AliDielectronSignalMC* elePionPairs = new AliDielectronSignalMC("elePionPairs","electron+pion pairs");    // true electron + mis-id pion
644   elePionPairs->SetLegPDGs(11,211);
645   elePionPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
646   die->AddSignalMC(elePionPairs);
647
648   AliDielectronSignalMC* eleKaonPairs = new AliDielectronSignalMC("eleKaonPairs","electron+kaon pairs");   // true electron + mis-id kaon
649   eleKaonPairs->SetLegPDGs(11,321);
650   eleKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
651   die->AddSignalMC(eleKaonPairs);
652
653   AliDielectronSignalMC* eleProtonPairs = new AliDielectronSignalMC("eleProtonPairs","Electron+proton pairs");  // true electron + mis-id proton
654   eleProtonPairs->SetLegPDGs(11,2212);
655   eleProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
656   die->AddSignalMC(eleProtonPairs);
657
658   AliDielectronSignalMC* piPiPairs = new AliDielectronSignalMC("piPiPairs","pion+pion pairs");    // mis-id pion + mis-id pion
659   piPiPairs->SetLegPDGs(211,211);
660   piPiPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
661   die->AddSignalMC(piPiPairs);
662
663   AliDielectronSignalMC* piKaonPairs = new AliDielectronSignalMC("piKaonPairs","pion+kaon pairs");  // mis-id pion + mis-id kaon
664   piKaonPairs->SetLegPDGs(211,321);
665   piKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
666   die->AddSignalMC(piKaonPairs);
667
668   AliDielectronSignalMC* piProtonPairs = new AliDielectronSignalMC("piProtonPairs","pion+proton pairs");  // mis-id pion + mis-id proton
669   piProtonPairs->SetLegPDGs(211,2212);
670   piProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
671   die->AddSignalMC(piProtonPairs);
672
673   AliDielectronSignalMC* kaonKaonPairs = new AliDielectronSignalMC("kaonKaonPairs","kaon+kaon pairs");  // mis-id kaon + mis-id kaon
674   kaonKaonPairs->SetLegPDGs(321,321);
675   kaonKaonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
676   die->AddSignalMC(kaonKaonPairs);
677
678   AliDielectronSignalMC* kaonProtonPairs = new AliDielectronSignalMC("kaonProtonPairs","kaon+proton pairs");   // mis-id kaon + mis-id proton
679   kaonProtonPairs->SetLegPDGs(321,2212);
680   kaonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
681   die->AddSignalMC(kaonProtonPairs);
682
683   AliDielectronSignalMC* protonProtonPairs = new AliDielectronSignalMC("protonProtonPairs","proton+proton pairs");  // mis-id proton + mis-id proton
684   protonProtonPairs->SetLegPDGs(2212,2212);
685   protonProtonPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
686   die->AddSignalMC(protonProtonPairs);
687
688   AliDielectronSignalMC* muonAllPairs = new AliDielectronSignalMC("muonAllPairs","muon+everything pairs");        // mis-id muon + something else (electron, pion, kaon, proton)
689   muonAllPairs->SetLegPDGs(13,13,kFALSE,kTRUE);
690   muonAllPairs->SetCheckBothChargesLegs(kTRUE,kTRUE);
691   die->AddSignalMC(muonAllPairs);
692   */
693
694
695   AliDielectronSignalMC* pi0Sig = new AliDielectronSignalMC("pi0", "pi0Signal"); ///pi0 dalitz pairs 
696   pi0Sig->SetLegPDGs(11,-11);
697   pi0Sig->SetMotherPDGs(111,111);
698   pi0Sig->SetMothersRelation(AliDielectronSignalMC::kSame);
699   pi0Sig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
700   pi0Sig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
701   pi0Sig->SetCheckBothChargesLegs(kTRUE,kTRUE);
702   pi0Sig->SetCheckBothChargesMothers(kTRUE,kTRUE);
703   pi0Sig->SetFillPureMCStep(kTRUE);
704   die->AddSignalMC(pi0Sig);
705
706
707   AliDielectronSignalMC* etaSig = new AliDielectronSignalMC("Eta", "etaSignal"); ///eta dalitz pairs 
708   etaSig->SetLegPDGs(11,-11);
709   etaSig->SetMotherPDGs(221,221);
710   etaSig->SetMothersRelation(AliDielectronSignalMC::kSame);
711   etaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
712   etaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
713   etaSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
714   etaSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
715   etaSig->SetFillPureMCStep(kTRUE);
716   die->AddSignalMC(etaSig);
717
718
719   AliDielectronSignalMC* etaprimeSig = new AliDielectronSignalMC("Etaprime", "etaprimeSignal"); ///etaprime pairs 
720   etaprimeSig->SetLegPDGs(11,-11);
721   etaprimeSig->SetMotherPDGs(331,331);
722   etaprimeSig->SetMothersRelation(AliDielectronSignalMC::kSame);
723   etaprimeSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
724   etaprimeSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
725   etaprimeSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
726   etaprimeSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
727   etaprimeSig->SetFillPureMCStep(kTRUE);
728   die->AddSignalMC(etaprimeSig);
729
730
731   AliDielectronSignalMC* rhoSig = new AliDielectronSignalMC("Rho", "rhoSignal"); ///rho pairs 
732   rhoSig->SetLegPDGs(11,-11);
733   rhoSig->SetMotherPDGs(113,113);
734   rhoSig->SetMothersRelation(AliDielectronSignalMC::kSame);
735   rhoSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
736   rhoSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
737   rhoSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
738   rhoSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
739   rhoSig->SetFillPureMCStep(kTRUE);
740   die->AddSignalMC(rhoSig);
741
742   AliDielectronSignalMC* omegaSig = new AliDielectronSignalMC("Omega", "omegaSignal"); ///omega pairs 
743   omegaSig->SetLegPDGs(11,-11);
744   omegaSig->SetMotherPDGs(223,223);
745   omegaSig->SetMothersRelation(AliDielectronSignalMC::kSame);
746   omegaSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
747   omegaSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
748   omegaSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
749   omegaSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
750   omegaSig->SetFillPureMCStep(kTRUE);
751   die->AddSignalMC(omegaSig);
752   
753   AliDielectronSignalMC* phiSig = new AliDielectronSignalMC("Phi", "phiSignal"); ///phi pairs 
754   phiSig->SetLegPDGs(11,-11);
755   phiSig->SetMotherPDGs(333,333);
756   phiSig->SetMothersRelation(AliDielectronSignalMC::kSame);
757   phiSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
758   phiSig->SetMotherSources(AliDielectronSignalMC::kPrimary, AliDielectronSignalMC::kPrimary);
759   phiSig->SetCheckBothChargesLegs(kTRUE,kTRUE);
760   phiSig->SetCheckBothChargesMothers(kTRUE,kTRUE);
761   phiSig->SetFillPureMCStep(kTRUE);
762   die->AddSignalMC(phiSig);
763
764   /*
765   AliDielectronSignalMC* convSig = new AliDielectronSignalMC("conv", "convSignal");
766   convSig->SetLegPDGs(11,-11);
767   convSig->SetMothersRelation(AliDielectronSignalMC::kSame);
768   convSig->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); //in this case, ee needs to be true=IsPhysicalPrimary(label)
769   convSig->SetCheckBothChargesLegs(kFALSE,kFALSE);
770   die->AddSignalMC(convSig);
771   */
772 }
773