#include "AliCaloTrackReader.h"
#include "AliPDG.h"
#include "AliAnalysisManager.h"
+#include "AliInputEventHandler.h"
ClassImp(AliAnalysisTaskParticleCorrelation)
AliAnalysisTaskSE(),
fAna(0x0),
fOutputContainer(0x0),
- fConfigName("")
+ fConfigName(""), fCuts(0x0)
{
// Default constructor
}
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;
}
//_____________________________________________________
//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);
}
}
+//_____________________________________________________
+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);
+
+}
+