]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/CaloTrackCorrBase/AliAnaCaloTrackCorrBaseClass.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / CaloTrackCorrBase / AliAnaCaloTrackCorrBaseClass.cxx
index 68429e64d4f52ee69db17fe9f5c30956190aab6e..d13b601f8f626b7ce7e7e9a13410363c7c80dd05 100755 (executable)
@@ -37,7 +37,6 @@
 #include "AliVCaloCells.h" 
 #include "AliAODEvent.h"
 #include "AliAODHandler.h"
-#include "AliAnalysisManager.h"
 #include "AliAODPWG4Particle.h"
 
 ClassImp(AliAnaCaloTrackCorrBaseClass)
@@ -46,13 +45,17 @@ ClassImp(AliAnaCaloTrackCorrBaseClass)
 //__________________________________________________________
 AliAnaCaloTrackCorrBaseClass::AliAnaCaloTrackCorrBaseClass() : 
 TObject(), 
-fDataMC(0),                   fDebug(0),                   fCheckFidCut(0),
+fDataMC(0),                   fDebug(0),
+fCalorimeter(-1),             fCalorimeterString(""),
+fCheckFidCut(0),              fCheckRealCaloAcc(0),
 fCheckCaloPID(0),             fRecalculateCaloPID(0), 
-fMinPt(0),                    fMaxPt(0),                   fPairTimeCut(200), 
-fMultiBin(0),                 fNZvertBin(0),
-fNrpBin(0),                   fNCentrBin(0),
-fNmaxMixEv(0),                fMaxMulti(0),                fMinMulti(0),
-fUseSelectEvent(kFALSE),      fMakePlots(kFALSE),
+fMinPt(0),                    fMaxPt(0),
+fPairTimeCut(200),            fTRDSMCovered(-1),
+fNZvertBin(0),                fNrpBin(0),
+fNCentrBin(0),                fNmaxMixEv(0),
+fDoOwnMix(0),                 fUseTrackMultBins(0),
+fFillPileUpHistograms(0),     fFillHighMultHistograms(0),
+fMakePlots(kFALSE),
 fInputAODBranch(0x0),         fInputAODName(""),
 fOutputAODBranch(0x0),        fNewAOD(kFALSE),
 fOutputAODName(""),           fOutputAODClassName(""),
@@ -76,12 +79,12 @@ AliAnaCaloTrackCorrBaseClass::~AliAnaCaloTrackCorrBaseClass()
   //delete fCaloUtils ; //Already deleted in maker
   //delete fReader ;    //Already deleted in maker
        
-  delete fCaloPID ; fCaloPID = 0;
-  delete fFidCut ;  fFidCut  = 0;
-  delete fIC ;      fIC      = 0;
-  delete fMCUtils ; fMCUtils = 0;
-  delete fNMS ;     fNMS     = 0;
-  delete fHisto;    fHisto   = 0;
+  delete fCaloPID ; 
+  delete fFidCut  ;  
+  delete fIC      ;      
+  delete fMCUtils ; 
+  delete fNMS     ;     
+  delete fHisto   ;    
 }
 
 //______________________________________________________________________
@@ -89,30 +92,31 @@ void AliAnaCaloTrackCorrBaseClass::AddAODParticle(AliAODPWG4Particle pc)
 {
   //Put AOD calo cluster in the AODParticleCorrelation array
   
-  if(fOutputAODBranch){
-    
-    Int_t i = fOutputAODBranch->GetEntriesFast();
-    //new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
-    if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4Particle")==0)
-      new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
-    else   if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4ParticleCorrelation")==0)
-      new((*fOutputAODBranch)[i])  AliAODPWG4ParticleCorrelation(pc);
-    else {
-      printf("AliAnaCaloTrackCorrBaseClass::AddAODParticle() - Cannot add an object of type < %s >, to the AOD TClonesArray \n",  
-             fOutputAODBranch->GetClass()->GetName());
-      abort();    
-    }
+  if(!fOutputAODBranch)
+  {
+    AliFatal("No AOD branch available!!!\n");
+    return; // coverity
+  }
+  
+  Int_t i = fOutputAODBranch->GetEntriesFast();
+  //new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
+  if     (strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4Particle")==0)
+  {
+    new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
+  }
+  else if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4ParticleCorrelation")==0)
+  {
+    new((*fOutputAODBranch)[i])  AliAODPWG4ParticleCorrelation(pc);
   }
-  else {
-    printf(" AliAnaCaloTrackCorrBaseClass::AddAODParticle() - No AOD branch available!!!\n");
-    abort();
+  else
+  {
+    AliFatal(Form("Cannot add an object of type < %s >, to the AOD TClonesArray \n", fOutputAODBranch->GetClass()->GetName()));
   }
   
-}      
+}
 
-//_______________________________________________________________________________
-Int_t AliAnaCaloTrackCorrBaseClass::CheckMixedEventVertex(const Int_t caloLabel, 
-                                                          const Int_t trackLabel)
+//__________________________________________________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::CheckMixedEventVertex(Int_t caloLabel, Int_t trackLabel)
 {
   // Check vertex in mixed events
   
@@ -146,7 +150,7 @@ void AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches()
   //Recover ouput and input AOD pointers for each event in the maker
        
   //Delta AODs
-  if(fDebug > 3) printf("AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",fInputAODName.Data(),fOutputAODName.Data());
+  AliDebug(3,Form("AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",fInputAODName.Data(),fOutputAODName.Data()));
   
   //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
   AliAODHandler* aodHandler = 0x0;
@@ -160,60 +164,71 @@ void AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches()
     fOutputAODBranch =  (TClonesArray *) (fReader->GetAODBranchList())->FindObject(fOutputAODName);
     fInputAODBranch  =  (TClonesArray *) (fReader->GetAODBranchList())->FindObject(fInputAODName);     
   }
-  else if (aodHandler->GetExtensions()) { 
-    
+  else if (aodHandler->GetExtensions())
+  {
     AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(GetReader()->GetDeltaAODFileName()); 
-    if(ext){
+    if(ext)
+    {
       AliAODEvent *aodEvent = ext->GetAOD(); 
       if(fNewAOD)fOutputAODBranch = (TClonesArray*) aodEvent->FindListObject(fOutputAODName);
       fInputAODBranch = (TClonesArray*) aodEvent->FindListObject(fInputAODName);         
       if(!fOutputAODBranch && fNewAOD) fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
       if(!fInputAODBranch)  fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);
     }
-    else{//If no Delta AODs, kept in standard branch, to revise. 
-      if(fNewAOD && fReader->GetOutputEvent()) {
+    else
+    { // If no Delta AODs, kept in standard branch, to revise.
+      if(fNewAOD && fReader->GetOutputEvent())
+      {
         fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
         fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName); 
       }
-      else {
+      else
+      {
         fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName);  
         if(!fInputAODBranch && fReader->GetOutputEvent() ) 
           fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
       }
     }
   }
-  else{ //If no Delta AODs, kept in standard branch
-    if(fNewAOD && fReader->GetOutputEvent()) {
+  else
+  { // If no Delta AODs, kept in standard branch
+    if(fNewAOD && fReader->GetOutputEvent())
+    {
       fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
       fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);   
     }
-    else{ 
+    else
+    {
       fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName);
       if(!fInputAODBranch && fReader->GetOutputEvent())  
         fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
     }
   }
   
-  if(GetDebug() > 1){
-    if(fNewAOD && !fOutputAODBranch) 
-      printf(" AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Output Branch <%s>, not found!\n",fOutputAODName.Data());
-    if(!fNewAOD && !fInputAODBranch) 
-      printf(" AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Input Branch  <%s>, not found!\n",fInputAODName.Data());
-  }
+//  if(GetDebug() > 1)
+//  {
+//    if(fNewAOD && !fOutputAODBranch) 
+//      AliInfo(Form("Output Branch <%s>, not found!\n",fOutputAODName.Data()));
+//    if(!fNewAOD && !fInputAODBranch) 
+//      AliInfo(Form("Input Branch  <%s>, not found!\n",fInputAODName.Data()));
+//  }
 }
 
-//__________________________________________________________________________________________
-AliVCluster * AliAnaCaloTrackCorrBaseClass::FindCluster(TObjArray* clusters, const Int_t id, 
-                                                        Int_t & iclus, const Int_t first) 
+//_____________________________________________________________________________________
+AliVCluster * AliAnaCaloTrackCorrBaseClass::FindCluster(TObjArray* clusters, Int_t id,
+                                                        Int_t & iclus, Int_t first)
 {
   // Given the cluster ID stored in AliAODPWG4Particle, get the originator cluster and its index in the array
   
   if(!clusters) return 0x0;
   
-  for(iclus = first; iclus < clusters->GetEntriesFast(); iclus++){
+  for(iclus = first; iclus < clusters->GetEntriesFast(); iclus++)
+  {
     AliVCluster *cluster= dynamic_cast<AliVCluster*> (clusters->At(iclus));
-    if(cluster){
-      if     (cluster->GetID()==id) {
+    if(cluster)
+    {
+      if(cluster->GetID()==id)
+      {
         return cluster;
       }
     }      
@@ -223,13 +238,14 @@ AliVCluster * AliAnaCaloTrackCorrBaseClass::FindCluster(TObjArray* clusters, con
   
 }
 
-//______________________________________________________________________________
-TClonesArray * AliAnaCaloTrackCorrBaseClass::GetAODBranch(TString aodName) const 
+//______________________________________________________________________________________
+TClonesArray * AliAnaCaloTrackCorrBaseClass::GetAODBranch(const TString & aodName) const
 {
        //Recover ouput and input AOD pointers for each event in the maker
        
        //Delta AODs
-       if(fDebug > 3) printf("AliAnaCaloTrackCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data());
+  
+       AliDebug(3,Form("AliAnaCaloTrackCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data()));
        
   //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
   AliAODHandler* aodHandler = 0x0;
@@ -331,13 +347,16 @@ TString  AliAnaCaloTrackCorrBaseClass::GetBaseParametersList()
   parList+=onePar ;
   snprintf(onePar,buffersize,"fCheckFidCut=%d (Check Fiducial cut selection on/off) \n",fCheckFidCut) ;
   parList+=onePar ;
+  snprintf(onePar,buffersize,"fCheckRealCaloAcc=%d (Check Real Calo Acceptance on/off) \n",fCheckRealCaloAcc) ;
+  parList+=onePar ;
   snprintf(onePar,buffersize,"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off) \n",fCheckCaloPID) ;
   parList+=onePar ;
   snprintf(onePar,buffersize,"fRecalculateCaloPID  =%d (Calculate PID from shower/tof/tracking parameters, on/off) \n",fRecalculateCaloPID) ;
   parList+=onePar ;
   snprintf(onePar,buffersize,"fInputAODName  =%s Input AOD name \n",fInputAODName.Data()) ;
   parList+=onePar ;    
-  if(fNewAOD){
+  if(fNewAOD)
+  {
     snprintf(onePar,buffersize,"fOutputAODName  =%s Output AOD name \n",fOutputAODName.Data()) ;
     parList+=onePar ;  
     snprintf(onePar,buffersize,"fOutputAODClassName  =%s Output AOD class name \n",fOutputAODClassName.Data()) ;
@@ -357,8 +376,8 @@ TClonesArray * AliAnaCaloTrackCorrBaseClass::GetCreateOutputAODBranch()
 {
   //Create AOD branch filled in the analysis
   
-  printf("Create AOD branch of %s objects and with name < %s >\n",
-         fOutputAODClassName.Data(),fOutputAODName.Data()) ;
+  AliInfo(Form("Create AOD branch of %s objects and with name < %s >\n",
+          fOutputAODClassName.Data(),fOutputAODName.Data())) ;
   
   TClonesArray * aodBranch = new TClonesArray(fOutputAODClassName, 0);
   aodBranch->SetName(fOutputAODName);
@@ -402,23 +421,187 @@ AliGenEventHeader *  AliAnaCaloTrackCorrBaseClass::GetMCGenEventHeader() const
   
 }
 
+
+//_________________________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetTrackMultiplicityBin() const
+{
+  // Track multiplicity bins
+  
+  //curCentrBin = (GetTrackMultiplicity()-1)/5;
+  //if(curCentrBin > GetNCentrBin()-1) curCentrBin=GetNCentrBin()-1;
+  Int_t trackMult = GetReader()->GetTrackMultiplicity();
+  
+  for(Int_t ibin = 0; ibin < GetNTrackMultBin()-1; ibin++)
+  {
+    if(trackMult >= fTrackMultBins[ibin] && trackMult < fTrackMultBins[ibin+1]) return ibin;
+  }
+  
+  AliWarning(Form("Bin not found for track multiplicity %d",trackMult));
+  
+  return -1;
+}
+
+//________________________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetEventCentralityBin() const
+{
+  // Define the centrality bin for mixing
+  // In pp collisions analysis hardcoded track multiplicities
+  
+  Int_t curCentrBin = 0;
+  
+  if(fUseTrackMultBins) // pp collisions
+  {
+    return GetTrackMultiplicityBin();
+  }
+  else // Set centrality based on centrality task, PbPb collisions
+  {
+    Float_t minCent = GetReader()->GetCentralityBin(0);
+    Float_t maxCent = GetReader()->GetCentralityBin(1);
+    
+    if((minCent< 0 && maxCent< 0) || minCent>=maxCent)
+    {
+      curCentrBin = GetEventCentrality() * GetNCentrBin() / GetReader()->GetCentralityOpt();
+      if(curCentrBin==GetNCentrBin())
+      {
+        curCentrBin = GetNCentrBin()-1;
+        AliDebug(1,Form("Centrality = %d, put it in last bin \n",GetEventCentrality()));
+      }
+    }
+    else
+    {
+      curCentrBin = (Int_t)((GetEventCentrality()-minCent) * GetNCentrBin() / (maxCent-minCent));
+      if(curCentrBin==GetNCentrBin()) curCentrBin = GetNCentrBin()-1;
+    }
+    
+    AliDebug(1,Form("Current CentrBin %d, centrality %d, n bins %d, max bin from centrality %d",
+                    curCentrBin, GetEventCentrality(), GetNCentrBin(), GetReader()->GetCentralityOpt()));
+  }
+  
+  return curCentrBin;
+  
+}
+
+//_______________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetEventRPBin() const
+{
+  //Reaction plane bin
+  
+  Int_t curRPBin  = 0 ;
+  
+  if(GetNRPBin() > 1 && GetEventPlane())
+  {
+    Float_t epAngle = GetEventPlaneAngle();//->GetEventplane(GetEventPlaneMethod(),fReader->GetInputEvent());
+    
+    if(epAngle < 0 || epAngle >TMath::Pi())
+    { 
+      AliWarning(Form("Wrong event plane angle : %f \n",epAngle));
+      return -1;
+    }
+    
+    curRPBin = TMath::Nint(epAngle*(GetNRPBin()-1)/TMath::Pi());
+    if(curRPBin >= GetNRPBin()) printf("RP Bin %d out of range %d",curRPBin,GetNRPBin());
+    
+    AliDebug(1,Form("Current RP bin %d, bin float %f, angle %f, n bins %d",
+                    curRPBin,epAngle*(GetNRPBin()-1)/TMath::Pi(),epAngle,GetNRPBin()));
+  }  
+  
+  return curRPBin ;
+  
+}
+
+//_______________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetEventVzBin() const
+{
+  // Return Vz bin, divide vertex in GetNZvertBin() bins, 
+  // depending on the vertex cut
+  
+  Double_t v[3] = {0,0,0}; //vertex 
+  GetReader()->GetVertex(v);
+  
+  Int_t curZvertBin = (Int_t)(0.5*GetNZvertBin()*(v[2]+GetZvertexCut())/GetZvertexCut());
+  
+  AliDebug(1,Form("AliAnaCaloTrackCorrBaseClass::GetEventVzBin() - %d, vz %2.2f, n bins %d",
+                  curZvertBin, v[2], GetNZvertBin()));
+  
+  return curZvertBin;
+}
+
+//________________________________________________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetEventMixBin(Int_t iCen, Int_t iVz, Int_t iRP) const
+{
+  // Event mixing bin, combination of vz, centrality and reaction plane bins
+  
+  if(iCen<0 || iVz < 0 || iRP < 0)
+    return -1;
+  else
+    return iCen*GetNZvertBin()*GetNRPBin()+iVz*GetNRPBin()+iRP;
+}
+
+//________________________________________________________
+Int_t AliAnaCaloTrackCorrBaseClass::GetEventMixBin() const
+{
+  // Event mixing bin, combination of vz, centrality and reaction plane bins
+  
+  //Get vertex z bin
+  Int_t iVz =  GetEventVzBin();
+  
+  // centrality (PbPb) or tracks multiplicity (pp) bin
+  Int_t iCen = GetEventCentralityBin();
+  
+  // reaction plane bin (PbPb)
+  Int_t iRP = GetEventRPBin();  
+  
+  Int_t eventBin = GetEventMixBin(iCen, iVz, iRP);
+  
+  AliDebug(1,Form("Bins : cent %d, vz %d, RP %d, event %d/%d",
+                  iCen,iVz, iRP, eventBin, GetNZvertBin()*GetNRPBin()*GetNCentrBin()));
+  
+  return eventBin;
+  
+}
+
+//____________________________________________
+void AliAnaCaloTrackCorrBaseClass::InitDebug()
+{
+  // Init once the debugging level, if requested
+  
+  // Activate debug level in analysis
+
+  if( fDebug >= 0 )
+    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),fDebug);
+  
+  if( GetMCAnalysisUtils()->GetDebug() >= 0 )
+    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(GetMCAnalysisUtils()->ClassName(),GetMCAnalysisUtils()->GetDebug());
+  
+  if( GetIsolationCut()->GetDebug() >= 0 )
+    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(GetIsolationCut()   ->ClassName(),GetIsolationCut()->GetDebug());
+  
+  //printf("Debug levels: Ana %d, MC %d, Iso %d\n",fDebug,GetMCAnalysisUtils()->GetDebug(),GetIsolationCut()->GetDebug());
+
+}
+
 //_________________________________________________
 void AliAnaCaloTrackCorrBaseClass::InitParameters()
 { 
   //Initialize the parameters of the analysis.
   fDataMC              = kFALSE;
-  fDebug               = -1;
+  fDebug               = 0;
   fCheckCaloPID        = kTRUE ;
   fCheckFidCut         = kFALSE ;
+  fCheckRealCaloAcc    = kFALSE ;
   fRecalculateCaloPID  = kFALSE ;
-  fMinPt               = 0.1  ; //Min pt in particle analysis
+  fMinPt               = 0.2  ; //Min pt in particle analysis
   fMaxPt               = 300. ; //Max pt in particle analysis
-  fMultiBin            = 1;
   fNZvertBin           = 1;
   fNrpBin              = 1;
-  fMaxMulti            = 1000;
-  fMinMulti            = 0;
-  fUseSelectEvent      = kFALSE ;
+  
+  fCalorimeterString   = "EMCAL";
+  fCalorimeter         = kEMCAL ;
+  
+  fTrackMultBins[0] =  0;  fTrackMultBins[1] =  5;  fTrackMultBins[2] = 10;
+  fTrackMultBins[3] = 15;  fTrackMultBins[4] = 20;  fTrackMultBins[5] = 30;
+  fTrackMultBins[6] = 40;  fTrackMultBins[7] = 55;  fTrackMultBins[8] = 70;
+  for(Int_t ibin=9; ibin < 20; ibin++) fTrackMultBins[ibin] = 10000;
   
   //fReader    = new AliCaloTrackReader(); //Initialized in maker
   //fCaloUtils = new AliCalorimeterUtils();//Initialized in maker
@@ -440,25 +623,57 @@ void AliAnaCaloTrackCorrBaseClass::Print(const Option_t * opt) const
   if(! opt)
     return;
        
-  printf("New AOD:            =     %d\n",fNewAOD);
-  printf("Input AOD name:     =     %s\n",fInputAODName.Data());
-  printf("Output AOD name:    =     %s\n",fOutputAODName.Data());
-  printf("Output AOD Class name: =  %s\n",fOutputAODClassName.Data());
-  printf("Min Photon pT       =     %2.2f\n",  fMinPt) ;
-  printf("Max Photon pT       =     %3.2f\n",  fMaxPt) ;
-  printf("Check PID           =     %d\n",     fCheckCaloPID) ;
-  printf("Recalculate PID     =     %d\n",     fRecalculateCaloPID) ;
-  printf("Check Fiducial cut  =     %d\n",     fCheckFidCut) ;
-  printf("Check MC labels     =     %d\n",     fDataMC);
-  printf("Make plots?         =     %d \n",    fMakePlots);    
-  printf("Debug Level         =     %d\n",     fDebug);
-  
-  printf("Name of reference array      : %s\n", fAODObjArrayName.Data());      
+  printf("New AOD:            =     %d\n",      fNewAOD);
+  printf("Input AOD name:     =     %s\n",      fInputAODName.Data());
+  printf("Output AOD name:    =     %s\n",      fOutputAODName.Data());
+  printf("Output AOD Class name: =  %s\n",      fOutputAODClassName.Data());
+  printf("Name of reference array      : %s\n", fAODObjArrayName.Data());
   printf("String added histograms name : %s\n", fAddToHistogramsName.Data());
-       
+
+  printf("Min Photon pT       =     %2.2f\n", fMinPt) ;
+  printf("Max Photon pT       =     %3.2f\n", fMaxPt) ;
+  printf("Check PID           =     %d\n",    fCheckCaloPID) ;
+  printf("Recalculate PID     =     %d\n",    fRecalculateCaloPID) ;
+  printf("Check Fiducial cut  =     %d\n",    fCheckFidCut) ;
+  printf("Check Real Calo Acc =     %d\n",    fCheckRealCaloAcc) ;
+  printf("Check MC labels     =     %d\n",    fDataMC);
+  printf("Make plots?         =     %d\n",    fMakePlots);
+  printf("Debug Level         =     %d\n",    fDebug);
+  
   printf("    \n") ;
   
 } 
 
+//_______________________________________________________________
+void AliAnaCaloTrackCorrBaseClass::SetCalorimeter(TString & calo)
+{
+  // Set the calorimeter for the analysis
+  
+  fCalorimeterString = calo;
+  
+  if     (calo=="EMCAL") fCalorimeter = kEMCAL;
+  else if(calo=="PHOS" ) fCalorimeter = kPHOS;
+  else if(calo=="CTS")   fCalorimeter = kCTS;
+  else if(calo=="DCAL")  fCalorimeter = kDCAL;
+  else if(calo.Contains("DCAL") && calo.Contains("PHOS")) fCalorimeter = kDCALPHOS;
+  else AliFatal(Form("Detector < %s > not known!", calo.Data()));
+
+}
+
+//___________________________________________________________
+void AliAnaCaloTrackCorrBaseClass::SetCalorimeter(Int_t calo)
+{
+  // Set the calorimeter for the analysis
+  
+  fCalorimeter = calo;
+  
+  if     (calo==kEMCAL)    fCalorimeterString = "EMCAL";
+  else if(calo==kPHOS )    fCalorimeterString = "PHOS";
+  else if(calo==kCTS)      fCalorimeterString = "CTS";
+  else if(calo==kDCAL)     fCalorimeterString = "DCAL";
+  else if(calo==kDCALPHOS) fCalorimeterString = "DCAL_PHOS";
+  else AliFatal(Form("Detector < %d > not known!", calo));
+
+}