90 likes | 183 Views
Andreas Morsch Weekly Offline Meeting 7/6/2007. Towards a Framework for Organized Analysis. Who manages the common output objects AliAODEvent, AOD Tree and output file?. What has to be called when SlaveBegin AliAODEvent constructor Open file AOD tree constructor ExecuteAnalysis
E N D
Andreas Morsch Weekly Offline Meeting 7/6/2007 Towards a Framework forOrganized Analysis
Who manages the common output objects AliAODEvent, AOD Tree and output file? • What has to be called when • SlaveBegin • AliAODEvent constructor • Open file • AOD tree constructor • ExecuteAnalysis • AOD tree fill • AliAODEvent Clear • Terminate • WriteTree • Close File
AliAnalysisManager AliAODEvent AliAnalysisManagerAOD AliVEvent AliAnalysisManager AliAODEvent AliVirtualEventHandler AliAnalysisManager AliAODHandler AliAODEvent
AliVirtualEventHandler class AliVirtualEventHandler : public TNamed { public: AliVirtualEventHandler(); AliVirtualEventHandler(const char* name, const char* title); virtual ~AliVirtualEventHandler(); virtual void SetOutputFileName(char* fname) = 0; virtual char* GetOutputFileName() = 0; virtual Bool_t InitIO(Option_t* opt) = 0; virtual Bool_t Fill() = 0; virtual Bool_t Terminate() = 0; virtual Bool_t TerminateIO() = 0; private : ClassDef(AliVirtualEventHandler, 1); };
AliAODHandler class AliAODHandler : public AliVirtualEventHandler { public: AliAODHandler(); AliAODHandler(const char* name, const char* title); virtual ~AliAODHandler(); // Implements the interface virtual void SetOutputFileName(char* fname) {fName = fname;} virtual char* GetOutputFileName() {return fName;} virtual Bool_t InitIO(Option_t* option); virtual Bool_t Fill(); virtual Bool_t Terminate(); virtual Bool_t TerminateIO(); virtual Bool_t Notify() {return kTRUE;} // AOD Specific AliAODEvent* GetAOD() {return fAODEvent;} TTree* GetTree() {return fTreeA;} void CreateTree(); void FillTree(); void AddAODtoTreeUserInfo(); };
User Code void AliAnalysisTaskJets::CreateOutputObjects() { // Create the output container // // Default AOD AliAODHandler* handler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetEventHandler()); fAOD = handler->GetAOD(); fTreeA = handler->GetTree(); fJetFinder->ConnectAOD(fAOD); }
Configuration // Make the analysis manager // AliAODHandler* aodHandler = new AliAODHandler(); aodHandler->SetOutputFileName("aod.root"); AliAnalysisManager *mgr = new AliAnalysisManager(‘Analysis Train’, ‘Test’); mgr->SetEventHandler(aodHandler); AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(‘AODTree’, TTree::Class(), AliAnalysisManager::kOutputContainer, "default");
Testing • Many tasks per train • Collect code from friendly users • Default output + user output • All execution modes • Local • Proof (file merging needed) • Grid (M. Gheata)
Next steps • AOD as input • Event mixing use case • Using input event handler ?