Add centrality control histogram plus some cosmetics
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 29 Jan 2012 16:39:47 +0000 (16:39 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 29 Jan 2012 16:39:47 +0000 (16:39 +0000)
PWG/CaloTrackCorrBase/AliAnaCaloTrackCorrMaker.cxx
PWG/CaloTrackCorrBase/AliAnaCaloTrackCorrMaker.h

index ff5768b..6097626 100755 (executable)
@@ -28,7 +28,6 @@
 #include "TClonesArray.h"
 #include "TList.h"
 #include "TH1I.h"
-//#include "Riostream.h"
 //#include <TObjectTable.h>
 
 //---- AliRoot system ---- 
@@ -43,11 +42,12 @@ ClassImp(AliAnaCaloTrackCorrMaker)
 //__________________________________________________
 AliAnaCaloTrackCorrMaker::AliAnaCaloTrackCorrMaker() : 
 TObject(),
+fReader(0),                   fCaloUtils(0),
 fOutputContainer(new TList ), fAnalysisContainer(new TList ),
 fMakeHisto(kFALSE),           fMakeAOD(kFALSE), 
-fAnaDebug(0),                 fReader(0), 
-fCaloUtils(0),                fCuts(new TList), 
-fhNEvents(0x0),               fhTrackMult(0x0)
+fAnaDebug(0),                 fCuts(new TList), 
+fhNEvents(0x0),               fhTrackMult(0x0),
+fhCentrality(0x0)
 {
   //Default Ctor
   if(fAnaDebug > 1 ) printf("*** Analysis Maker Constructor *** \n");
@@ -59,12 +59,13 @@ fhNEvents(0x0),               fhTrackMult(0x0)
 //________________________________________________________________________________________
 AliAnaCaloTrackCorrMaker::AliAnaCaloTrackCorrMaker(const AliAnaCaloTrackCorrMaker & maker) :   
 TObject(),
+fReader(),   //(new AliCaloTrackReader(*maker.fReader)),
+fCaloUtils(),//(new AliCalorimeterUtils(*maker.fCaloUtils)),
 fOutputContainer(new TList()), fAnalysisContainer(new TList()), 
 fMakeHisto(maker.fMakeHisto),  fMakeAOD(maker.fMakeAOD),
-fAnaDebug(maker.fAnaDebug),    fReader(),//new AliCaloTrackReader(*maker.fReader)), 
-fCaloUtils(),//(new AliCalorimeterUtils(*maker.fCaloUtils)),
-fCuts(new TList()),
-fhNEvents(maker.fhNEvents),    fhTrackMult(maker.fhTrackMult)
+fAnaDebug(maker.fAnaDebug),    fCuts(new TList()),
+fhNEvents(maker.fhNEvents),    fhTrackMult(maker.fhTrackMult),
+fhCentrality(maker.fhCentrality)
 {
   // cpy ctor
 }
@@ -80,7 +81,8 @@ AliAnaCaloTrackCorrMaker::~AliAnaCaloTrackCorrMaker()
   //    delete fOutputContainer ;
   //  }   
   
-  if (fAnalysisContainer) {
+  if (fAnalysisContainer)
+  {
     fAnalysisContainer->Delete();
     delete fAnalysisContainer ;
   }   
@@ -88,7 +90,8 @@ AliAnaCaloTrackCorrMaker::~AliAnaCaloTrackCorrMaker()
   if (fReader)    delete fReader ;
   if (fCaloUtils) delete fCaloUtils ;
   
-  if(fCuts){
+  if(fCuts)
+  {
          fCuts->Delete();
          delete fCuts;
   }
@@ -121,11 +124,10 @@ TList * AliAnaCaloTrackCorrMaker::FillAndGetAODBranchList()
   
        TList *aodBranchList = fReader->GetAODBranchList() ;
   
-       for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++){
-               
+       for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++)
+  {
                AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
                if(ana->NewOutputAOD()) aodBranchList->Add(ana->GetCreateOutputAODBranch());
-    
        }
        
        return aodBranchList ;
@@ -138,15 +140,15 @@ TList * AliAnaCaloTrackCorrMaker::GetListOfAnalysisCuts()
   
        // Get the list of the cuts used for the analysis
        // The list is filled in the maker, called by the task in LocalInit() and posted there
-
   
-       for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++){
+       for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++)
+  {
                AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
                TObjString * objstring = ana->GetAnalysisCuts();
-
+    
                if(objstring)fCuts->Add(objstring);
        }
-
+  
        return fCuts ;
   
 }
@@ -160,41 +162,61 @@ TList *AliAnaCaloTrackCorrMaker::GetOutputContainer()
   GetCaloUtils()->InitPHOSGeometry();
   GetCaloUtils()->InitEMCALGeometry();
   
-  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0){
-    printf("AliAnaCaloTrackCorrMaker::GetOutputContainer() - Analysis job list not initialized!!!\n");
-    //abort();
-  }
-  else{
-    const Int_t buffersize = 255;
-    char newname[255];
-    for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++){
-      AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
-      if(fMakeHisto){// Analysis with histograms as output on
-        //Fill container with appropriate histograms                   
-        TList * templist =  ana ->GetCreateOutputObjects(); 
-        templist->SetOwner(kFALSE); //Owner is fOutputContainer.
-        for(Int_t i = 0; i < templist->GetEntries(); i++){
-          
-          //Add only  to the histogram name the name of the task
-          if(   strcmp((templist->At(i))->ClassName(),"TObjString")   ) {
-            snprintf(newname,buffersize, "%s%s", (ana->GetAddedHistogramsStringToName()).Data(), (templist->At(i))->GetName());  
-            ((TH1*) templist->At(i))->SetName(newname);
-          }
-          //Add histogram to general container
-          fOutputContainer->Add(templist->At(i)) ;
-        }
-        delete templist;
-      }// Analysis with histograms as output on
-    }//Loop on analysis defined
-  }//Analysis list available
-  
   //General event histograms
   
   fhNEvents        = new TH1I("hNEvents",   "Number of analyzed events"     , 1 , 0 , 1  ) ;
+  fhNEvents->SetYTitle("# events");
   fOutputContainer->Add(fhNEvents);
+  
   fhTrackMult      = new TH1I("hTrackMult", "Number of tracks per events"   , 2000 , 0 , 2000  ) ;
+  fhTrackMult->SetXTitle("# tracks");
   fOutputContainer->Add(fhTrackMult);
   
+  fhCentrality     =new TH1F("hCentrality","Number of events in centrality bin",100,0.,100) ;
+  fhCentrality->SetXTitle("Centrality bin");
+  fOutputContainer->Add(fhCentrality) ;  
+  
+  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0)
+  {
+    printf("AliAnaCaloTrackCorrMaker::GetOutputContainer() - Analysis job list not initialized!!!\n");
+    return fOutputContainer;
+  }
+  
+  const Int_t buffersize = 255;
+  char newname[buffersize];
+  for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++)
+  {
+    
+    AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
+    
+    if(fMakeHisto) // Analysis with histograms as output on
+    {
+      
+      //Fill container with appropriate histograms                     
+      TList * templist =  ana ->GetCreateOutputObjects(); 
+      templist->SetOwner(kFALSE); //Owner is fOutputContainer.
+      
+      for(Int_t i = 0; i < templist->GetEntries(); i++)
+      {
+        
+        //Add only  to the histogram name the name of the task
+        if(   strcmp((templist->At(i))->ClassName(),"TObjString")   ) 
+        {
+          snprintf(newname,buffersize, "%s%s", (ana->GetAddedHistogramsStringToName()).Data(), (templist->At(i))->GetName());  
+          ((TH1*) templist->At(i))->SetName(newname);
+        }
+        
+        //Add histogram to general container
+        fOutputContainer->Add(templist->At(i)) ;
+        
+      }
+      
+      delete templist;
+      
+    }// Analysis with histograms as output on
+    
+  }//Loop on analysis defined
+  
   return fOutputContainer;
   
 }
@@ -210,22 +232,24 @@ void AliAnaCaloTrackCorrMaker::Init()
   GetReader()->SetCaloUtils(GetCaloUtils()); // pass the calo utils pointer to the reader
        
   
-  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0){
+  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0)
+  {
     printf("AliAnaCaloTrackCorrMaker::GetOutputInit() - Analysis job list not initialized!!!\n");
-    //abort();
+    return;
   }
-       else{
+  
+  for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++)
+  {
     
-    for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++){
-      
-      AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
-      ana->SetReader(fReader); //SetReader for each analysis
-      ana->SetCaloUtils(fCaloUtils); //Set CaloUtils for each analysis
-      
-      ana->Init();
-      
-    }//Loop on analysis defined
-  }//Analysis list available
+    AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
+    
+    ana->SetReader(fReader);       // Set Reader for each analysis
+    ana->SetCaloUtils(fCaloUtils); // Set CaloUtils for each analysis
+    
+    ana->Init();
+    
+  }//Loop on analysis defined
+  
 }
 
 //_____________________________________________
@@ -248,14 +272,16 @@ void AliAnaCaloTrackCorrMaker::Print(const Option_t * opt) const
     return;
   
   printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
-  printf("Debug level                =     %d\n", fAnaDebug) ;
-  printf("Produce Histo              =     %d\n", fMakeHisto) ;
-  printf("Produce AOD                =     %d\n", fMakeAOD) ;
+  printf("Debug level                =     %d\n", fAnaDebug   ) ;
+  printf("Produce Histo              =     %d\n", fMakeHisto  ) ;
+  printf("Produce AOD                =     %d\n", fMakeAOD    ) ;
   printf("Number of analysis tasks   =     %d\n", fAnalysisContainer->GetEntries()) ;
   
-  if(!strcmp("all",opt)){
+  if(!strcmp("all",opt))
+  {
          printf("Print analysis Tasks settings :\n") ;
-         for(Int_t iana = 0; iana<fAnalysisContainer->GetEntries(); iana++){
+         for(Int_t iana = 0; iana<fAnalysisContainer->GetEntries(); iana++)
+    {
                  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana))->Print("");
          }
     
@@ -263,7 +289,9 @@ void AliAnaCaloTrackCorrMaker::Print(const Option_t * opt) const
          fReader->Print("");
          printf("Print analysis Calorimeter Utils settings :\n") ;
          fCaloUtils->Print("");
+    
   }
+  
 } 
 
 //_______________________________________________________________________
@@ -272,14 +300,17 @@ void AliAnaCaloTrackCorrMaker::ProcessEvent(const Int_t iEntry,
 {
   //Process analysis for this event
   
-  if(fMakeHisto && !fOutputContainer){
+  if(fMakeHisto && !fOutputContainer)
+  {
     printf("AliAnaCaloTrackCorrMaker::ProcessEvent() - Histograms not initialized\n");
     abort();
   }
        
-  if(fAnaDebug >= 0 ){ 
+  if(fAnaDebug >= 0 )
+  { 
                printf("***  AliAnaCaloTrackCorrMaker::ProcessEvent() Event %d   ***  \n",iEntry);
-         if(fAnaDebug > 1 ) {
+         if(fAnaDebug > 1 ) 
+    {
                  printf("AliAnaCaloTrackCorrMaker::ProcessEvent() - Current File Name : %s\n", currentFileName);
                  //printf("fAODBranchList %p, entries %d\n",fAODBranchList,fAODBranchList->GetEntries());
          }
@@ -288,7 +319,8 @@ void AliAnaCaloTrackCorrMaker::ProcessEvent(const Int_t iEntry,
   //Each event needs an empty branch
   TList * aodList = fReader->GetAODBranchList();
   Int_t nAODBranches = aodList->GetEntries();
-  for(Int_t iaod = 0; iaod < nAODBranches; iaod++){
+  for(Int_t iaod = 0; iaod < nAODBranches; iaod++)
+  {
          TClonesArray *tca = dynamic_cast<TClonesArray*> (aodList->At(iaod));
          if(tca) tca->Clear("C");
   }
@@ -298,7 +330,8 @@ void AliAnaCaloTrackCorrMaker::ProcessEvent(const Int_t iEntry,
   
   //Tell the reader to fill the data in the 3 detector lists
   Bool_t ok = fReader->FillInputEvent(iEntry, currentFileName);
-  if(!ok){
+  if(!ok)
+  {
          if(fAnaDebug >= 1 )printf("*** Skip event *** %d \n",iEntry);
          return ;
   }
@@ -308,10 +341,14 @@ void AliAnaCaloTrackCorrMaker::ProcessEvent(const Int_t iEntry,
   
   //printf(">>>>>>>>>> BEFORE >>>>>>>>>>>\n");
   //gObjectTable->Print();
+  
   //Loop on analysis algorithms
+  
   if(fAnaDebug > 0 ) printf("*** Begin analysis *** \n");
+  
   Int_t nana = fAnalysisContainer->GetEntries() ;
-  for(Int_t iana = 0; iana <  nana; iana++){
+  for(Int_t iana = 0; iana <  nana; iana++)
+  {
     AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ; 
     
     ana->ConnectInputOutputAODBranches(); //Sets branches for each analysis
@@ -322,8 +359,10 @@ void AliAnaCaloTrackCorrMaker::ProcessEvent(const Int_t iEntry,
     
   }
        
-  fhNEvents->Fill(0); //Event analyzed
-  fhTrackMult->Fill(fReader->GetTrackMultiplicity()); 
+  // Event control histograms
+  fhNEvents   ->Fill(0); //Event analyzed
+  fhTrackMult ->Fill(fReader->GetTrackMultiplicity()); 
+  fhCentrality->Fill(fReader->GetEventCentrality());
   
   fReader->ResetLists();
   
@@ -340,16 +379,19 @@ void AliAnaCaloTrackCorrMaker::Terminate(TList * outputList)
   //Execute Terminate of analysis
   //Do some final plots.
   
-  if (!outputList) {
+  if (!outputList) 
+  {
          Error("Terminate", "No output list");
          return;
   }
        
-  for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++){
+  for(Int_t iana = 0; iana <  fAnalysisContainer->GetEntries(); iana++)
+  {
     
     AliAnaCaloTrackCorrBaseClass * ana =  ((AliAnaCaloTrackCorrBaseClass *) fAnalysisContainer->At(iana)) ;
     if(ana->MakePlotsOn())ana->Terminate(outputList);
     
   }//Loop on analysis defined
+  
 }
 
index 2209c47..20ba149 100755 (executable)
@@ -25,11 +25,10 @@ class TH1I;
 class AliAnaCaloTrackCorrMaker : public TObject {
 
  public: 
+  
   AliAnaCaloTrackCorrMaker() ;          // default ctor
   virtual ~AliAnaCaloTrackCorrMaker() ; // virtual dtor
   AliAnaCaloTrackCorrMaker(const AliAnaCaloTrackCorrMaker & maker) ; // cpy ctor
-
- public:
        
   void    AddAnalysis(TObject* ana, Int_t n) ;
 
@@ -72,23 +71,24 @@ class AliAnaCaloTrackCorrMaker : public TObject {
   
   //General Data members
   
-  TList * fOutputContainer ;   //! Output histograms container
-  TList * fAnalysisContainer ; // List with analysis pointers
-  Bool_t  fMakeHisto ;         // If true makes final analysis with histograms as output
-  Bool_t  fMakeAOD ;           // If true makes analysis generating AODs
-  Int_t   fAnaDebug;           // Debugging info.
-       
   AliCaloTrackReader  *  fReader ;     //  Pointer to reader 
   AliCalorimeterUtils *  fCaloUtils ;  //  Pointer to CalorimeterUtils
-
-  TList * fCuts ;                 //! List with analysis cuts
-
-  TH1I  * fhNEvents;         //! Number of events counter histogram
-  TH1I  * fhTrackMult;       //! Number of tracks per event histogram
+  
+  TList * fOutputContainer ;   //! Output histograms container
+  TList * fAnalysisContainer ; //  List with analysis pointers
+  Bool_t  fMakeHisto ;         //  If true makes final analysis with histograms as output
+  Bool_t  fMakeAOD ;           //  If true makes analysis generating AODs
+  Int_t   fAnaDebug;           //  Debugging info.
+  TList * fCuts ;                   //! List with analysis cuts
+  
+  // Control histograms
+  TH1I  * fhNEvents;           //! Number of events counter histogram
+  TH1I  * fhTrackMult;         //! Number of tracks per event histogram
+  TH1F  * fhCentrality;        //! Histogram with centrality bins
 
   AliAnaCaloTrackCorrMaker & operator = (const AliAnaCaloTrackCorrMaker & ) ; // cpy assignment
   
-  ClassDef(AliAnaCaloTrackCorrMaker,8)
+  ClassDef(AliAnaCaloTrackCorrMaker,9)
 } ;