]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.cxx
7ade083049e64fe59d27e4d819a0ba71466f0660
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15 /* $Id: $ */
16
17 //_________________________________________________________________________
18 // Base class for analysis algorithms
19 //-- Author: Gustavo Conesa (LNF-INFN) 
20 //_________________________________________________________________________
21   
22
23 // --- ROOT system ---
24 #include <TClonesArray.h>
25 //#include <Riostream.h>
26
27 //---- AliRoot system ----
28 #include "AliAnaPartCorrBaseClass.h"
29 #include "AliCaloTrackReader.h"
30 #include "AliCalorimeterUtils.h"
31 #include "AliCaloPID.h"
32 #include "AliFiducialCut.h"
33 #include "AliIsolationCut.h"
34 #include "AliMCAnalysisUtils.h"
35 #include "AliNeutralMesonSelection.h"
36 #include "AliAODCaloCells.h" 
37 #include "AliAODEvent.h"
38 #include "AliAODHandler.h"
39 #include "AliAnalysisManager.h"
40
41 ClassImp(AliAnaPartCorrBaseClass)
42   
43   
44 //_______________________________________________
45   AliAnaPartCorrBaseClass::AliAnaPartCorrBaseClass() : 
46     TObject(), fDataMC(0), fDebug(0), fCheckFidCut(0),
47     fCheckCaloPID(0), fRecalculateCaloPID(0), fMinPt(0), fMaxPt(0),
48     fReader(0x0), fInputAODBranch(0x0), fInputAODName(""),
49     fOutputAODBranch(0x0), fNewAOD(kFALSE),
50     fOutputAODName(""), fOutputAODClassName(""),
51     fAODObjArrayName(""), fAddToHistogramsName(""),
52     fAODCaloCells(0x0),//fAODCaloClusters(0x0),  
53     fCaloPID(0x0), fFidCut(0x0), fIC(0x0),fMCUtils(0x0), fNMS(0x0),
54         fCaloUtils(0x0),
55         //fAnaOutContainer(0x0),
56     fHistoPtBins(0),   fHistoPtMax(0.),   fHistoPtMin(0.),
57     fHistoPhiBins(0),  fHistoPhiMax(0.),  fHistoPhiMin(0.),
58     fHistoEtaBins(0),  fHistoEtaMax(0.),  fHistoEtaMin(0.),
59     fHistoMassBins(0), fHistoMassMax(0.), fHistoMassMin(0.),
60         fHistoAsymBins(0), fHistoAsymMax(0.), fHistoAsymMin(0.)
61 {
62   //Default Ctor
63     
64   //Initialize parameters
65   InitParameters();
66 }
67
68 //___________________________________________________________
69 AliAnaPartCorrBaseClass::AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & abc) :   
70   TObject(), fDataMC(abc.fDataMC), fDebug(abc.fDebug),
71   fCheckFidCut(abc.fCheckFidCut),  fCheckCaloPID(abc. fCheckCaloPID),
72   fRecalculateCaloPID(abc.fRecalculateCaloPID),
73   fMinPt(abc.fMinPt), fMaxPt(abc.fMaxPt), fReader(new AliCaloTrackReader(*abc.fReader)),  
74   fInputAODBranch(new TClonesArray(*abc.fInputAODBranch)), fInputAODName(abc.fInputAODName),
75   fOutputAODBranch(new TClonesArray(*abc.fOutputAODBranch)),fNewAOD(abc.fNewAOD), 
76   fOutputAODName(abc.fOutputAODName), fOutputAODClassName(abc.fOutputAODClassName),
77   fAODObjArrayName(abc.fAODObjArrayName),
78   fAddToHistogramsName(abc.fAddToHistogramsName),
79   //fAODCaloClusters(new TClonesArray(*abc.fAODCaloClusters)),
80   fAODCaloCells(new AliAODCaloCells(*abc.fAODCaloCells)),
81   fCaloPID(new AliCaloPID(*abc.fCaloPID)), fFidCut(new AliFiducialCut(*abc.fFidCut)), fIC(new AliIsolationCut(*abc.fIC)),
82   fMCUtils(new AliMCAnalysisUtils(*abc.fMCUtils)), fNMS(new AliNeutralMesonSelection(*abc.fNMS)),
83   fCaloUtils(new AliCalorimeterUtils(*abc.fCaloUtils)),
84   //fAnaOutContainer(abc.fAnaOutContainer),
85   fHistoPtBins(abc.fHistoPtBins),     fHistoPtMax(abc.fHistoPtMax),     fHistoPtMin(abc.fHistoPtMin),
86   fHistoPhiBins(abc.fHistoPhiBins),   fHistoPhiMax(abc.fHistoPhiMax),   fHistoPhiMin(abc.fHistoPhiMin),
87   fHistoEtaBins(abc.fHistoEtaBins),   fHistoEtaMax(abc.fHistoEtaMax),   fHistoEtaMin(abc.fHistoEtaMin),
88   fHistoMassBins(abc.fHistoMassBins), fHistoMassMax(abc.fHistoMassMax), fHistoMassMin(abc.fHistoMassMin),
89   fHistoAsymBins(abc.fHistoAsymBins), fHistoAsymMax(abc.fHistoAsymMax), fHistoAsymMin(abc.fHistoAsymMin)
90 {
91   // cpy ctor
92
93 }
94
95 //_________________________________________________________________________
96 AliAnaPartCorrBaseClass & AliAnaPartCorrBaseClass::operator = (const AliAnaPartCorrBaseClass & abc)
97 {
98   // assignment operator
99   
100   if(this == &abc) return *this;
101   ((TObject *)this)->operator=(abc);
102   
103   fDataMC             = abc.fDataMC;
104   fDebug              = abc.fDebug ;
105   fRecalculateCaloPID = abc.fRecalculateCaloPID ;
106   fCheckCaloPID       = abc.fCheckCaloPID ;
107   fCheckFidCut        = abc.fCheckFidCut ; 
108         
109   //delete fAODCaloClusters; fAODCaloClusters   = new TClonesArray(*abc.fAODCaloClusters) ;
110   delete fAODCaloCells ; fAODCaloCells      = new AliAODCaloCells(*abc.fAODCaloCells) ;
111   
112   fMinPt   = abc.fMinPt;
113   fMaxPt   = abc.fMaxPt;
114         
115   delete fCaloPID;   fCaloPID   = new AliCaloPID        (*abc.fCaloPID);
116   delete fFidCut;    fFidCut    = new AliFiducialCut    (*abc.fFidCut);
117   delete fMCUtils;   fMCUtils   = new AliMCAnalysisUtils(*abc.fMCUtils);
118   delete fIC;        fIC        = new AliIsolationCut   (*abc.fIC);
119   delete fNMS;       fNMS       = new AliNeutralMesonSelection(*abc.fNMS);
120   delete fCaloUtils; fCaloUtils = new AliCalorimeterUtils(*abc.fCaloUtils);
121   delete fReader;    fReader    = new AliCaloTrackReader(*abc.fReader) ;
122
123   //fAnaOutContainer     = abc.fAnaOutContainer;
124         
125   delete fInputAODBranch;  fInputAODBranch      = new TClonesArray(*abc.fInputAODBranch) ;
126   fInputAODName        = abc.fInputAODName;
127   delete fOutputAODBranch; fOutputAODBranch     = new TClonesArray(*abc.fOutputAODBranch) ;
128   fNewAOD              = abc.fNewAOD ; 
129   fOutputAODName       = abc.fOutputAODName; 
130   fOutputAODClassName  = abc.fOutputAODClassName;
131   fAddToHistogramsName = abc.fAddToHistogramsName;
132   fAODObjArrayName     = abc.fAODObjArrayName;
133
134   fHistoPtBins  = abc.fHistoPtBins;  fHistoPtMax  = abc.fHistoPtMax;  fHistoPtMin  = abc.fHistoPtMin;
135   fHistoPhiBins = abc.fHistoPhiBins; fHistoPhiMax = abc.fHistoPhiMax; fHistoPhiMin = abc.fHistoPhiMin;
136   fHistoEtaBins = abc.fHistoEtaBins; fHistoEtaMax = abc.fHistoEtaMax; fHistoEtaMin = abc.fHistoEtaMin;
137   
138   return *this;
139   
140 }
141
142 //____________________________________________________________________________
143 AliAnaPartCorrBaseClass::~AliAnaPartCorrBaseClass() 
144 {
145   // Remove all pointers except analysis output pointers.
146 //printf("---Delete analysis %s\n", fAODObjArrayName.Data());
147   // Not sure if it should be me who deletes the delta AOD branches.
148 //  if(fOutputAODBranch){
149 //    fOutputAODBranch->Clear() ; 
150 //    delete fOutputAODBranch ;
151 //  }
152 //  
153 //  if(fInputAODBranch){
154 //    fInputAODBranch->Clear() ; 
155 //    delete fInputAODBranch ;
156 //  }
157   
158 //      if(fAODCaloClusters){
159 //              fAODCaloClusters->Clear() ; 
160 //              delete fAODCaloClusters ;
161 //      }
162         
163   if(fAODCaloCells){
164     fAODCaloCells->Clear() ; 
165     delete fAODCaloCells ;
166   }
167         
168   //Already deleted in maker
169 //  if(fAnaOutContainer){
170 //      fAnaOutContainer->Clear() ; 
171 //      delete fAnaOutContainer ;
172 //  }
173                 
174   //if(fCaloUtils)    delete fCaloUtils ; //Already deleted in maker
175   //if(fReader)       delete fReader ;    //Already deleted in maker
176         
177   if(fCaloPID)   delete fCaloPID ;
178   if(fFidCut)    delete fFidCut ;
179   if(fIC)        delete fIC ;
180   if(fMCUtils)   delete fMCUtils ;
181   if(fNMS)       delete fNMS ;
182 //   printf("--- analysis deleted \n");
183 }
184
185 ////____________________________________________________________________________
186 //void AliAnaPartCorrBaseClass::AddAODCaloCluster(AliAODCaloCluster calo) {
187 //  //Put AOD calo cluster in the CaloClusters array
188 //
189 //  Int_t i = fAODCaloClusters->GetEntriesFast();
190 //  new((*fAODCaloClusters)[i])  AliAODCaloCluster(calo);
191 //
192 //}
193
194
195 //____________________________________________________________________________
196 void AliAnaPartCorrBaseClass::AddAODParticle(AliAODPWG4Particle pc) {
197   //Put AOD calo cluster in the AODParticleCorrelation array
198   
199   if(fOutputAODBranch){
200     
201     Int_t i = fOutputAODBranch->GetEntriesFast();
202     //new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
203     if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4Particle")==0)
204       new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
205     else   if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4ParticleCorrelation")==0)
206       new((*fOutputAODBranch)[i])  AliAODPWG4ParticleCorrelation(pc);
207     else {
208       printf("AliAnaPartCorrBaseClass::AddAODParticle() - Cannot add an object of type < %s >, to the AOD TClonesArray \n",  
209              fOutputAODBranch->GetClass()->GetName());
210       abort();    
211     }
212   }
213   else {
214     printf(" AliAnaPartCorrBaseClass::AddAODParticle() - No AOD branch available!!!\n");
215     abort();
216   }
217
218 }       
219
220
221 //___________________________________________________
222 //void AliAnaPartCorrBaseClass::ConnectAODCaloClusters() {
223 //  //Recover the list of AODCaloClusters
224 //
225 //  fAODCaloClusters = fReader->GetOutputEvent()->GetCaloClusters();
226 //
227 //}
228 //
229 //___________________________________________________
230 void AliAnaPartCorrBaseClass::ConnectAODPHOSCells() {
231   //Recover the list of PHOS AODCaloCells 
232
233   fAODCaloCells = fReader->GetOutputEvent()->GetPHOSCells();
234
235 }
236
237 //___________________________________________________
238 void AliAnaPartCorrBaseClass::ConnectAODEMCALCells() {
239   //Recover the list of EMCAL AODCaloCells 
240
241   fAODCaloCells = fReader->GetOutputEvent()->GetEMCALCells();
242
243 }
244
245 //___________________________________________________
246 TClonesArray * AliAnaPartCorrBaseClass::GetAODBranch(TString aodName) const {
247         //Recover ouput and input AOD pointers for each event in the maker
248         
249         //Delta AODs
250         if(fDebug > 3) printf("AliAnaPartCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data());
251         
252         //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
253         AliAODHandler* aodHandler = 0x0;
254         Bool_t outAOD = kFALSE;
255         if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
256         if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); 
257         else       aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
258         
259         if (aodHandler->GetExtensions()) { 
260                 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(GetReader()->GetDeltaAODFileName()); 
261                 if(ext){
262                         AliAODEvent *aodEvent = ext->GetAOD(); 
263                         TClonesArray * aodbranch =  (TClonesArray*) aodEvent->FindListObject(aodName);
264                         if(aodbranch) return aodbranch;
265                         else {
266                                 if(outAOD) return  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(aodName);
267                                 else       return  (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
268                         }
269                 }
270                 else{//If no Delta AODs, kept in standard branch, to revise. 
271                         if(outAOD) return (TClonesArray *) fReader->GetOutputEvent()->FindListObject(aodName);
272                         else       return (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
273                 }
274         }
275         else{ //If no Delta AODs, kept in standard branch, to revise. 
276                 if(outAOD) return (TClonesArray *) fReader->GetOutputEvent()->FindListObject(aodName);
277                 else      return  (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
278         }
279 }
280
281
282 //___________________________________________________
283 void AliAnaPartCorrBaseClass::ConnectInputOutputAODBranches() {
284   //Recover ouput and input AOD pointers for each event in the maker
285         
286   //Delta AODs
287   if(fDebug > 3) printf("AliAnaPartCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",fInputAODName.Data(),fOutputAODName.Data());
288
289         //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
290         AliAODHandler* aodHandler = 0x0;
291         Bool_t outAOD = kFALSE;
292         if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
293         if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); 
294         else       aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
295         
296   if (aodHandler->GetExtensions()) { 
297
298           AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(GetReader()->GetDeltaAODFileName()); 
299           if(ext){
300           AliAODEvent *aodEvent = ext->GetAOD(); 
301           if(fNewAOD)fOutputAODBranch = (TClonesArray*) aodEvent->FindListObject(fOutputAODName);
302           fInputAODBranch = (TClonesArray*) aodEvent->FindListObject(fInputAODName);      
303           if(!fOutputAODBranch && fNewAOD) fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
304           if(!fInputAODBranch)  fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);
305           }
306           else{//If no Delta AODs, kept in standard branch, to revise. 
307                   if(fNewAOD && fReader->GetOutputEvent()) {
308                           fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
309                           fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);        
310                   }
311                   else {
312                           fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName); 
313                           if(!fInputAODBranch && fReader->GetOutputEvent() ) 
314                                   fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
315                   }
316           }
317   }
318   else{ //If no Delta AODs, kept in standard branch
319           if(fNewAOD && fReader->GetOutputEvent()) {
320                   fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
321                   fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);        
322           }
323           else{ 
324                   fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName);
325                   if(!fInputAODBranch && fReader->GetOutputEvent())  
326                           fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
327           }
328   }
329         
330   if(GetDebug() > 1){
331         if(fNewAOD && !fOutputAODBranch) 
332                 printf(" AliAnaPartCorrBaseClass::ConnectInputOutputAODBranches() - Output Branch <%s>, not found!\n",fOutputAODName.Data());
333         if(!fNewAOD && !fInputAODBranch) 
334                 printf(" AliAnaPartCorrBaseClass::ConnectInputOutputAODBranches() - Input Branch  <%s>, not found!\n",fInputAODName.Data());
335   }
336 }
337
338 //__________________________________________________
339 TObjArray *  AliAnaPartCorrBaseClass::GetAODCTS() const {
340   //Get list of referenced tracks from reader
341
342   return fReader->GetAODCTS(); 
343
344 }
345
346 //__________________________________________________
347 TObjArray *  AliAnaPartCorrBaseClass::GetAODPHOS() const {
348   //Get list of PHOS reference caloclusters from reader
349
350   return fReader->GetAODPHOS(); 
351
352 }
353
354 //__________________________________________________
355 TObjArray *  AliAnaPartCorrBaseClass::GetAODEMCAL() const {
356   //Get list of emcal referenced caloclusters from reader
357
358   return fReader->GetAODEMCAL(); 
359
360 }
361
362 //__________________________________________________
363 TClonesArray *  AliAnaPartCorrBaseClass::GetAODCaloClusters() const {
364   //Get list of all caloclusters in AOD output file 
365
366   return fReader->GetOutputEvent()->GetCaloClusters(); 
367
368 }
369
370 //__________________________________________________
371 TClonesArray *  AliAnaPartCorrBaseClass::GetAODTracks() const {
372   //Get list of all tracks in AOD output file 
373
374   return fReader->GetOutputEvent()->GetTracks(); 
375
376 }
377
378 //__________________________________________________
379 TString  AliAnaPartCorrBaseClass::GetBaseParametersList()  {
380   //Put data member values in string to keep in output container
381
382   TString parList ; //this will be list of parameters used for this analysis.
383   char onePar[255] ;
384   sprintf(onePar,"--- AliAnaPartCorrBaseClass ---\n") ;
385   parList+=onePar ;     
386   sprintf(onePar,"Minimal P_t: %2.2f ; Max\n", fMinPt) ;
387   parList+=onePar ;
388   sprintf(onePar,"Minimal P_t: %2.2f ; Max\n", fMaxPt) ;
389   parList+=onePar ;
390   sprintf(onePar,"fDataMC =%d (Check MC information, on/off) \n",fDataMC) ;
391   parList+=onePar ;
392   sprintf(onePar,"fCheckFidCut=%d (Check Fiducial cut selection on/off) \n",fCheckFidCut) ;
393   parList+=onePar ;
394   sprintf(onePar,"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off) \n",fCheckCaloPID) ;
395   parList+=onePar ;
396   sprintf(onePar,"fRecalculateCaloPID  =%d (Calculate PID from shower/tof/tracking parameters, on/off) \n",fRecalculateCaloPID) ;
397   parList+=onePar ;
398   sprintf(onePar,"fInputAODName  =%s Input AOD name \n",fInputAODName.Data()) ;
399   parList+=onePar ;     
400   if(fNewAOD){
401      sprintf(onePar,"fOutputAODName  =%s Output AOD name \n",fOutputAODName.Data()) ;
402      parList+=onePar ;  
403          sprintf(onePar,"fOutputAODClassName  =%s Output AOD class name \n",fOutputAODClassName.Data()) ;
404          parList+=onePar ;      
405   }
406   sprintf(onePar,"fAODObjArrayName  =%s Reference arrays in AOD name \n",fAODObjArrayName.Data()) ;
407   parList+=onePar ;     
408   sprintf(onePar,"fAddToHistogramsName  =%s String added to beginning of histograms name \n",fAddToHistogramsName.Data()) ;
409   parList+=onePar ;     
410         
411   return parList; 
412
413 }
414
415 //__________________________________________________
416  TClonesArray * AliAnaPartCorrBaseClass::GetCreateOutputAODBranch() {
417    //Create AOD branch filled in the analysis
418    
419    printf("Create AOD branch of %s objects and with name < %s >\n",
420           fOutputAODClassName.Data(),fOutputAODName.Data()) ;
421    
422    TClonesArray * aodBranch = new TClonesArray(fOutputAODClassName, 0);
423    aodBranch->SetName(fOutputAODName);
424    return aodBranch ;
425    
426  }
427
428 //__________________________________________________
429 TNamed *  AliAnaPartCorrBaseClass::GetPHOSCells() const {
430   //Get list of PHOS calo cells (ESD or AOD) from reader
431   
432   return fReader->GetPHOSCells(); 
433   
434 }
435
436
437 //__________________________________________________
438 TNamed *  AliAnaPartCorrBaseClass::GetEMCALCells() const {
439   //Get list of emcal calo cells (ESD or AOD) from reader
440   
441   return fReader->GetEMCALCells(); 
442
443 }
444
445 //__________________________________________________
446 Int_t AliAnaPartCorrBaseClass::GetEventNumber() const {
447         //Get current event number
448         
449         return fReader->GetEventNumber() ; 
450 }
451         
452 //__________________________________________________
453 AliStack *  AliAnaPartCorrBaseClass::GetMCStack() const {
454   //Get stack pointer from reader
455
456   return fReader->GetStack(); 
457
458 }
459 //__________________________________________________
460 AliHeader *  AliAnaPartCorrBaseClass::GetMCHeader() const {
461   //Get header pointer from reader
462
463   return fReader->GetHeader(); 
464
465 }
466
467 //__________________________________________________
468 AliGenEventHeader *  AliAnaPartCorrBaseClass::GetMCGenEventHeader() const {
469   //Get GenEventHeader pointer from reader
470
471   return fReader->GetGenEventHeader(); 
472
473 }
474
475 //__________________________________________________
476 void AliAnaPartCorrBaseClass::InitParameters()
477
478   //Initialize the parameters of the analysis.
479   fDataMC = kFALSE;
480   fDebug = -1;
481   fCheckCaloPID = kTRUE ;
482   fCheckFidCut = kFALSE ;
483   fRecalculateCaloPID = kFALSE ;
484   fMinPt = 0.1  ; //Min pt in particle analysis
485   fMaxPt = 300. ; //Max pt in particle analysis
486
487   fReader    = new AliCaloTrackReader();
488   fCaloUtils = new AliCalorimeterUtils();
489   fCaloPID   = new AliCaloPID();
490   fFidCut    = new AliFiducialCut();
491   fIC        = new AliIsolationCut();
492   fMCUtils   = new AliMCAnalysisUtils();        
493   fNMS       = new AliNeutralMesonSelection;
494   
495   //fAnaOutContainer = new TList();
496         
497   fNewAOD              = kFALSE ;
498   fOutputAODName       = "PartCorr";
499   fOutputAODClassName  = "AliAODPWG4Particle";
500   fInputAODName        = "PartCorr";
501   fAddToHistogramsName = "";
502   fAODObjArrayName     = "Ref";
503           
504   //Histogram settings
505   fHistoPtBins    = 240 ;
506   fHistoPtMax     = 120 ;
507   fHistoPtMin     = 0.  ;
508
509   fHistoPhiBins   = 120 ;
510   fHistoPhiMax    = TMath::TwoPi();
511   fHistoPhiMin    = 0.  ;
512
513   fHistoEtaBins   = 100 ;
514   fHistoEtaMax    =  1  ;
515   fHistoEtaMin    = -1  ;
516
517   fHistoMassBins  = 200;
518   fHistoMassMax   = 1. ;
519   fHistoMassMin   = 0. ;
520         
521   fHistoAsymBins  = 10 ;
522   fHistoAsymMax   = 1. ;
523   fHistoAsymMin   = 0. ;
524         
525 }
526
527 //__________________________________________________________________
528 void AliAnaPartCorrBaseClass::Print(const Option_t * opt) const
529 {
530   //Print some relevant parameters set for the analysis
531   
532   if(! opt)
533     return;
534         
535   printf("New AOD:            =     %d\n",fNewAOD);
536   printf("Input AOD name:     =     %s\n",fInputAODName.Data());
537   printf("Output AOD name:    =     %s\n",fOutputAODName.Data());
538   printf("Output AOD Class name: =  %s\n",fOutputAODClassName.Data());
539   printf("Min Photon pT       =     %2.2f\n",  fMinPt) ;
540   printf("Max Photon pT       =     %3.2f\n",  fMaxPt) ;
541   printf("Check PID           =     %d\n",     fCheckCaloPID) ;
542   printf("Recalculate PID     =     %d\n",     fRecalculateCaloPID) ;
543   printf("Check Fiducial cut  =     %d\n",     fCheckFidCut) ;
544   printf("Check MC labels     =     %d\n",     fDataMC);
545   printf("Debug Level         =     %d\n",     fDebug);
546   printf("Histograms: %3.1f < pT  < %3.1f,  Nbin = %d\n", fHistoPtMin,  fHistoPtMax,  fHistoPtBins);
547   printf("Histograms: %3.1f < phi < %3.1f, Nbin = %d\n", fHistoPhiMin, fHistoPhiMax, fHistoPhiBins);
548   printf("Histograms: %3.1f < eta < %3.1f, Nbin = %d\n", fHistoEtaMin, fHistoEtaMax, fHistoEtaBins);
549   printf("Histograms: %3.1f < mass < %3.1f, Nbin = %d\n", fHistoMassMin, fHistoMassMax, fHistoMassBins);
550   printf("Histograms: %3.1f < asymmetry < %3.1f, Nbin = %d\n", fHistoAsymMin, fHistoAsymMax, fHistoAsymBins);
551   printf("Name of reference array      : %s\n", fAODObjArrayName.Data());       
552   printf("String added histograms name : %s\n",fAddToHistogramsName.Data());
553         
554   printf("    \n") ;
555   
556