3 // Physics selection task.
12 #include "AliAnalysisDataContainer.h"
13 #include "AliAnalysisDataSlot.h"
14 #include "AliAnalysisManager.h"
15 #include "AliEmcalPhysicsSelection.h"
16 #include "AliEmcalPhysicsSelectionTask.h"
17 #include "AliESDEvent.h"
18 #include "AliInputEventHandler.h"
21 ClassImp(AliEmcalPhysicsSelectionTask)
23 //__________________________________________________________________________________________________
24 AliEmcalPhysicsSelectionTask::AliEmcalPhysicsSelectionTask() :
25 AliPhysicsSelectionTask(),
32 // Default constructor.
35 //__________________________________________________________________________________________________
36 AliEmcalPhysicsSelectionTask::AliEmcalPhysicsSelectionTask(const char* opt) :
37 AliPhysicsSelectionTask(),
47 fPhysicsSelection = new AliEmcalPhysicsSelection;
49 AliInputEventHandler* handler = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
51 handler->SetEventSelection(fPhysicsSelection);
52 AliInfo("Physics Event Selection enabled.");
54 AliError("No input event handler connected to analysis manager. No Physics Event Selection.");
56 // Define input and output slots here
57 DefineOutput(1, TList::Class());
58 fBranchNames = "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,AliESDVZERO.,"
59 "AliESDZDC.,SPDVertex.,PrimaryVertex.,TPCVertex.,Tracks,SPDPileupVertices";
61 AliLog::SetClassDebugLevel("AliEmcalPhysicsSelectionTask", AliLog::kWarning);
64 //__________________________________________________________________________________________________
65 void AliEmcalPhysicsSelectionTask::UserCreateOutputObjects()
67 // User create outputs.
69 AliPhysicsSelectionTask::UserCreateOutputObjects();
70 fHAcc = new TH1D("hEvCount",";0=rej/1=acc;#",2,-0.5,1.5);
72 fHEvtTypes = new TH1D("hEvtTypes",";#",10,-0.5,9.5);
73 fHEvtTypes->GetXaxis()->SetBinLabel(1,"All");
74 fHEvtTypes->GetXaxis()->SetBinLabel(2,"MB");
75 fHEvtTypes->GetXaxis()->SetBinLabel(3,"FO");
76 fHEvtTypes->GetXaxis()->SetBinLabel(4,"EMC");
77 fHEvtTypes->GetXaxis()->SetBinLabel(5,"EJE");
78 fHEvtTypes->GetXaxis()->SetBinLabel(6,"EGA");
79 fHEvtTypes->GetXaxis()->SetBinLabel(7,"Good");
80 fHEvtTypes->GetXaxis()->SetBinLabel(8,"HC");
81 fHEvtTypes->GetXaxis()->SetBinLabel(9,"HT");
82 fHEvtTypes->GetXaxis()->SetBinLabel(10,"LED");
83 fOutput->Add(fHEvtTypes);
84 if (!fDoWriteHistos) {
85 fOutput->Remove(fPhysicsSelection);
89 //__________________________________________________________________________________________________
90 void AliEmcalPhysicsSelectionTask::UserExec(const Option_t *opt)
94 AliPhysicsSelectionTask::UserExec(opt);
98 UInt_t res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
106 AliEmcalPhysicsSelection *ps=static_cast<AliEmcalPhysicsSelection *>(fPhysicsSelection);
108 if (res&AliVEvent::kAnyINT)
110 if (ps->IsFastOnly())
112 if ((res&AliVEvent::kEMC1) || (res&AliVEvent::kEMC7))
114 if (res&AliVEvent::kEMCEJE)
116 if (res&AliVEvent::kEMCEGA)
118 if (ps->IsGoodEvent())
120 if (res&AliEmcalPhysicsSelection::kEmcalHC)
122 if (res&AliEmcalPhysicsSelection::kEmcalHT)
124 if (ps->IsLedEvent())
128 //__________________________________________________________________________________________________
129 void AliEmcalPhysicsSelectionTask::Terminate(Option_t *)
131 // The Terminate() function is the last function to be called during
132 // a query. It always runs on the client, it can be used to present
133 // the results graphically or save the results to file.
135 AliInfo(Form("Called %d times, accepted %d events", fNCalled, fNAccepted));
140 fOutput = dynamic_cast<TList*> (GetOutputData(1));
142 AliError("fOutput not available");
146 AliAnalysisDataSlot *oslot = GetOutputSlot(1);
150 AliAnalysisDataContainer *ocont = oslot->GetContainer();
154 TFile *file = OpenFile(1);
158 TDirectory::TContext context(file);
159 if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
160 fPhysicsSelection = dynamic_cast<AliPhysicsSelection*> (fOutput->FindObject("AliPhysicsSelection"));
162 if (fPhysicsSelection) {
163 //fPhysicsSelection->Print();
164 fPhysicsSelection->SaveHistograms(Form("%sHists",ocont->GetName()));
165 AliInfo(Form("Writing result to %s",file->GetName()));
167 fOutput->Remove(fPhysicsSelection);