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(),
27 // Default constructor.
30 //__________________________________________________________________________________________________
31 AliEmcalPhysicsSelectionTask::AliEmcalPhysicsSelectionTask(const char* opt) :
32 AliPhysicsSelectionTask(),
42 fPhysicsSelection = new AliEmcalPhysicsSelection;
44 AliInputEventHandler* handler = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
46 handler->SetEventSelection(fPhysicsSelection);
47 AliInfo("Physics Event Selection enabled.");
49 AliError("No input event handler connected to analysis manager. No Physics Event Selection.");
51 // Define input and output slots here
52 DefineOutput(1, TList::Class());
53 fBranchNames = "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,AliESDVZERO.,"
54 "AliESDZDC.,SPDVertex.,PrimaryVertex.,TPCVertex.,Tracks,SPDPileupVertices";
56 AliLog::SetClassDebugLevel("AliEmcalPhysicsSelectionTask", AliLog::kWarning);
59 //__________________________________________________________________________________________________
60 void AliEmcalPhysicsSelectionTask::UserCreateOutputObjects()
62 // User create outputs.
64 AliPhysicsSelectionTask::UserCreateOutputObjects();
65 fHAcc = new TH1D("hEvCount",";0=rej/1=acc;#",2,-0.5,1.5);
67 fHEvtTypes = new TH1D("hEvtTypes",";#",10,-0.5,9.5);
68 fHEvtTypes->GetXaxis()->SetBinLabel(1,"All");
69 fHEvtTypes->GetXaxis()->SetBinLabel(2,"MB");
70 fHEvtTypes->GetXaxis()->SetBinLabel(3,"FO");
71 fHEvtTypes->GetXaxis()->SetBinLabel(4,"EMC");
72 fHEvtTypes->GetXaxis()->SetBinLabel(5,"EJE");
73 fHEvtTypes->GetXaxis()->SetBinLabel(6,"EGA");
74 fHEvtTypes->GetXaxis()->SetBinLabel(7,"Good");
75 fHEvtTypes->GetXaxis()->SetBinLabel(8,"HC");
76 fHEvtTypes->GetXaxis()->SetBinLabel(9,"HT");
77 fHEvtTypes->GetXaxis()->SetBinLabel(10,"LED");
78 fOutput->Add(fHEvtTypes);
79 if (!fDoWriteHistos) {
80 fOutput->Remove(fPhysicsSelection);
84 //__________________________________________________________________________________________________
85 void AliEmcalPhysicsSelectionTask::UserExec(const Option_t *opt)
89 AliPhysicsSelectionTask::UserExec(opt);
93 UInt_t res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
101 AliEmcalPhysicsSelection *ps=static_cast<AliEmcalPhysicsSelection *>(fPhysicsSelection);
103 if (res&AliVEvent::kAnyINT)
105 if (ps->IsFastOnly())
107 if ((res&AliVEvent::kEMC1) || (res&AliVEvent::kEMC7))
109 if (res&AliVEvent::kEMCEJE)
111 if (res&AliVEvent::kEMCEGA)
113 if (ps->IsGoodEvent())
115 if (res&AliEmcalPhysicsSelection::kEmcalHC)
117 if (res&AliEmcalPhysicsSelection::kEmcalHT)
119 if (ps->IsLedEvent())
123 //__________________________________________________________________________________________________
124 void AliEmcalPhysicsSelectionTask::Terminate(Option_t *)
126 // The Terminate() function is the last function to be called during
127 // a query. It always runs on the client, it can be used to present
128 // the results graphically or save the results to file.
130 AliInfo(Form("Called %d times, accepted %d events", fNCalled, fNAccepted));
135 fOutput = dynamic_cast<TList*> (GetOutputData(1));
137 AliError("fOutput not available");
141 AliAnalysisDataSlot *oslot = GetOutputSlot(1);
145 AliAnalysisDataContainer *ocont = oslot->GetContainer();
149 TFile *file = OpenFile(1);
153 TDirectory::TContext context(file);
154 if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
155 fPhysicsSelection = dynamic_cast<AliPhysicsSelection*> (fOutput->FindObject("AliPhysicsSelection"));
157 if (fPhysicsSelection) {
158 //fPhysicsSelection->Print();
159 fPhysicsSelection->SaveHistograms(Form("%sHists",ocont->GetName()));
160 AliInfo(Form("Writing result to %s",file->GetName()));
162 fOutput->Remove(fPhysicsSelection);