]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx
AliCaloPID: - Include best PHOS criteria to select photon clusters, add cuts for...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnalysisTaskParticleCorrelation.cxx
index c5bb8576260aa8ea8db4b14d376b3cefc300abe2..b86c66839d80805046e7f37e5fe41c2e31b5a6d3 100755 (executable)
@@ -37,6 +37,7 @@
 #include "AliCaloTrackReader.h"
 #include "AliPDG.h"
 #include "AliAnalysisManager.h"
+#include "AliInputEventHandler.h"
 
 ClassImp(AliAnalysisTaskParticleCorrelation)
 
@@ -45,7 +46,7 @@ AliAnalysisTaskParticleCorrelation::AliAnalysisTaskParticleCorrelation():
   AliAnalysisTaskSE(),
   fAna(0x0),
   fOutputContainer(0x0),
-  fConfigName("")
+  fConfigName(""), fCuts(0x0)
 {
   // Default constructor
 }
@@ -55,26 +56,23 @@ AliAnalysisTaskParticleCorrelation::AliAnalysisTaskParticleCorrelation(const cha
   AliAnalysisTaskSE(name),
   fAna(0x0),
   fOutputContainer(0x0),
-  fConfigName("")
+  fConfigName(""), fCuts(0x0)
 {
   // Default constructor
   
   DefineOutput(1, TList::Class());
-
+  DefineOutput(2, TList::Class());  // will contain cuts or local params
 }
 
 //_____________________________________________________
 AliAnalysisTaskParticleCorrelation::~AliAnalysisTaskParticleCorrelation() 
 {
   // Remove all pointers
-  
-  if(fOutputContainer){
+  if (fOutputContainer && ! AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
     fOutputContainer->Clear() ; 
     delete fOutputContainer ;
   }
-
-  if(fAna) delete fAna;
-       
+  if (fAna && ! AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fAna;
 }
 
 //_____________________________________________________
@@ -85,21 +83,45 @@ void AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects()
   
   //Get list of aod arrays, add each aod array to analysis frame 
   TClonesArray *array = 0;
-  TList * list = fAna->GetAODBranchList();
-  TString deltaAODName = (fAna->GetReader())->GetDeltaAODFileName();
-  for(Int_t iaod = 0; iaod < list->GetEntries(); iaod++){
-    array = (TClonesArray*) list->At(iaod);
-       if(deltaAODName!="") AddAODBranch("TClonesArray", &array, deltaAODName);//Put it in DeltaAOD file
-       else AddAODBranch("TClonesArray", &array);//Put it in standard AOD file
-  } 
-       
+  TList * list = fAna->FillAndGetAODBranchList(); //Loop the analysis and create the list of branches
+  if (DebugLevel() >= 1) printf("AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() - n AOD branches %d\n",list->GetEntries());
+  
+  //Put the delta AODs in output file, std or delta
+  if((fAna->GetReader())->WriteDeltaAODToFile()){
+    TString deltaAODName = (fAna->GetReader())->GetDeltaAODFileName();
+    for(Int_t iaod = 0; iaod < list->GetEntries(); iaod++){
+      array = (TClonesArray*) list->At(iaod);
+      if(deltaAODName!="") AddAODBranch("TClonesArray", &array, deltaAODName);//Put it in DeltaAOD file
+      else AddAODBranch("TClonesArray", &array);//Put it in standard AOD file
+    } 
+       }
+  
   //Histograms container
   OpenFile(1);
   fOutputContainer = fAna->GetOutputContainer();
+  
+  if (DebugLevel() >= 1) printf("AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() - n histograms %d\n",fOutputContainer->GetEntries());
+
   fOutputContainer->SetOwner(kTRUE);
+  
   if (DebugLevel() > 1) printf("AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() - End\n");
  
   PostData(1,fOutputContainer);
+
+}
+//_____________________________________________________
+void AliAnalysisTaskParticleCorrelation::LocalInit()
+{
+       // Local Initialization
+       
+       //Call the Init to initialize the configuration of the analysis
+       Init();
+       
+       // Create cuts/param objects and publish to slot
+       fCuts = fAna->GetListOfAnalysisCuts();
+       fCuts ->SetOwner(kTRUE);
+       // Post Data
+       PostData(2, fCuts);
        
 }
 
@@ -183,3 +205,19 @@ void AliAnalysisTaskParticleCorrelation::Terminate(Option_t */*option*/)
        
 }
 
+//_____________________________________________________
+void AliAnalysisTaskParticleCorrelation::FinishTaskOutput(){
+  // Put in the output some event summary histograms
+  AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
+  AliInputEventHandler *inputH = dynamic_cast<AliInputEventHandler*>(am->GetInputEventHandler());
+  if (!inputH) return; 
+  TH2F *histStat = dynamic_cast<TH2F*>(inputH->GetStatistics()); 
+  TH2F *histBin0 = dynamic_cast<TH2F*>(inputH->GetStatistics("BIN0"));
+  
+  if(histStat)fOutputContainer->Add(histStat); 
+  else if(DebugLevel()>0) 
+    printf("AliAnalysisTaskParticleCorrelation::FinishTaskOutput() - Stat histogram not available check, \n if ESDs, that AliPhysicsSelection was on, \n if AODs, if EventStat_temp.root exists \n");
+  if(histBin0)fOutputContainer->Add(histBin0); 
+  
+}
+