3 #include "AliPhysicsSelectionTask.h"
10 #include <AliESDEvent.h>
11 #include <AliHeader.h>
13 #include "AliPhysicsSelection.h"
14 #include "AliAnalysisManager.h"
15 #include "AliInputEventHandler.h"
17 //#include "AliBackgroundSelection.h"
19 ClassImp(AliPhysicsSelectionTask)
21 AliPhysicsSelectionTask::AliPhysicsSelectionTask() :
22 AliAnalysisTaskSE("AliPhysicsSelectionTask"),
25 fUseSpecialOutput(kFALSE),
29 // Default event handler
33 AliPhysicsSelectionTask::AliPhysicsSelectionTask(const char* opt) :
34 AliAnalysisTaskSE("AliPhysicsSelectionTask"),
37 fUseSpecialOutput(kFALSE),
38 fPhysicsSelection(new AliPhysicsSelection())
41 // Constructor. Initialization of pointers
43 AliInputEventHandler* handler = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
45 handler->SetEventSelection(fPhysicsSelection);
46 AliInfo("Physics Event Selection enabled.");
48 AliError("No input event handler connected to analysis manager. No Physics Event Selection.");
53 if (opts.Contains("specialoutput")) fUseSpecialOutput = kTRUE;
55 // Define input and output slots here
56 DefineOutput(1, TList::Class());
57 fBranchNames = "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,AliESDVZERO.,"
58 "AliESDZDC.,SPDVertex.,PrimaryVertex.,TPCVertex.,Tracks,SPDPileupVertices";
60 AliLog::SetClassDebugLevel("AliPhysicsSelectionTask", AliLog::kWarning);
63 AliPhysicsSelectionTask::~AliPhysicsSelectionTask()
69 // histograms are in the output list and deleted when the output
70 // list is deleted by the TSelector dtor
72 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
78 void AliPhysicsSelectionTask::UserCreateOutputObjects()
80 // create result objects and add to output list
82 Printf("AliPhysicsSelectionTask::CreateOutputObjects");
84 if (fUseSpecialOutput) OpenFile(1);
89 if (!fPhysicsSelection)
90 fPhysicsSelection = new AliPhysicsSelection;
92 fOutput->Add(fPhysicsSelection);
93 // All tasks must post data once for all outputs (AG)
97 void AliPhysicsSelectionTask::UserExec(Option_t*)
101 // AliPhysicsSelection::IsCollisionCandidate is called from the event handler
102 // post the data here anyway!
103 PostData(1, fOutput);
106 void AliPhysicsSelectionTask::FinishTaskOutput()
108 // This gets called at the end of the processing on the worker. It allows dumping
109 // statistics printed by the physics selection object to the statistics message
110 // handled by the analysis manager.
111 if (fPhysicsSelection) fPhysicsSelection->Print("STAT");
114 void AliPhysicsSelectionTask::Terminate(Option_t *)
116 // The Terminate() function is the last function to be called during
117 // a query. It always runs on the client, it can be used to present
118 // the results graphically or save the results to file.
120 fOutput = dynamic_cast<TList*> (GetOutputData(1));
122 Printf("ERROR: fOutput not available");
126 fPhysicsSelection = dynamic_cast<AliPhysicsSelection*> (fOutput->FindObject("AliPhysicsSelection"));
129 TFile* fout = new TFile("event_stat.root", "RECREATE");
131 if (fPhysicsSelection)
133 fPhysicsSelection->Print();
134 fPhysicsSelection->SaveHistograms();
140 Printf("Writing result to event_stat.root");