7 #include "AliAnalysisDataContainer.h"
8 #include "AliAnalysisDataSlot.h"
9 #include "AliAnalysisManager.h"
10 #include "AliEmcalPhysicsSelection.h"
11 #include "AliEmcalPhysicsSelectionTask.h"
12 #include "AliESDEvent.h"
13 #include "AliInputEventHandler.h"
16 ClassImp(AliEmcalPhysicsSelectionTask)
18 //__________________________________________________________________________________________________
19 AliEmcalPhysicsSelectionTask::AliEmcalPhysicsSelectionTask() :
20 AliPhysicsSelectionTask(),
26 // Default constructor.
29 //__________________________________________________________________________________________________
30 AliEmcalPhysicsSelectionTask::AliEmcalPhysicsSelectionTask(const char* opt) :
31 AliPhysicsSelectionTask(),
40 fPhysicsSelection = new AliEmcalPhysicsSelection;
42 AliInputEventHandler* handler = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
44 handler->SetEventSelection(fPhysicsSelection);
45 AliInfo("Physics Event Selection enabled.");
47 AliError("No input event handler connected to analysis manager. No Physics Event Selection.");
49 // Define input and output slots here
50 DefineOutput(1, TList::Class());
51 fBranchNames = "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,AliESDFMD.,AliESDVZERO.,AliESDZDC.,SPDVertex.,PrimaryVertex.";
53 AliLog::SetClassDebugLevel("AliEmcalPhysicsSelectionTask", AliLog::kWarning);
56 //__________________________________________________________________________________________________
57 void AliEmcalPhysicsSelectionTask::UserCreateOutputObjects()
59 // User create outputs.
61 AliPhysicsSelectionTask::UserCreateOutputObjects();
62 fHAcc = new TH1D("hEvCount",";0=rej/1=acc;#",2,-0.5,1.5);
64 if (!fDoWriteHistos) {
65 fOutput->Remove(fPhysicsSelection);
69 //__________________________________________________________________________________________________
70 void AliEmcalPhysicsSelectionTask::UserExec(const Option_t *opt)
74 AliPhysicsSelectionTask::UserExec(opt);
78 UInt_t res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
87 //__________________________________________________________________________________________________
88 void AliEmcalPhysicsSelectionTask::Terminate(Option_t *)
90 // The Terminate() function is the last function to be called during
91 // a query. It always runs on the client, it can be used to present
92 // the results graphically or save the results to file.
94 AliInfo(Form("Called %d times, accepted %d events", fNCalled, fNAccepted));
99 fOutput = dynamic_cast<TList*> (GetOutputData(1));
101 AliError("fOutput not available");
105 AliAnalysisDataSlot *oslot = GetOutputSlot(1);
109 AliAnalysisDataContainer *ocont = oslot->GetContainer();
113 TFile *file = OpenFile(1);
117 TDirectory::TContext context(file);
118 if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
119 fPhysicsSelection = dynamic_cast<AliPhysicsSelection*> (fOutput->FindObject("AliPhysicsSelection"));
121 if (fPhysicsSelection) {
122 //fPhysicsSelection->Print();
123 fPhysicsSelection->SaveHistograms(Form("%sHists",ocont->GetName()));
124 AliInfo(Form("Writing result to %s",file->GetName()));
126 fOutput->Remove(fPhysicsSelection);