8 #include "esdTrackCuts/AliESDtrackCuts.h"
9 #include "AliPWG0Helper.h"
11 #include "AliAnalysisTask.h"
12 #include "AliAnalysisManager.h"
13 #include "AliESDEvent.h"
14 #include "AliESDInputHandler.h"
15 #include "AliESDVertex.h"
17 #include "AliCutTask.h"
19 // simple task that runs the esd track cuts to evaluate the basic plots created during the cuts
23 //________________________________________________________________________
24 AliCutTask::AliCutTask(const char *name)
25 : AliAnalysisTask(name, ""), fESD(0), fTrackCuts(0), fVertex(0), fOutput(0)
29 // Define input and output slots here
30 DefineInput(0, TChain::Class());
31 DefineOutput(0, TList::Class());
34 //________________________________________________________________________
35 void AliCutTask::ConnectInputData(Option_t *)
37 // Connect ESD or AOD here
40 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
42 Printf("ERROR: Could not read chain from input slot 0");
44 // Disable all branches and enable only the needed ones
45 //tree->SetBranchStatus("*", kFALSE);
47 tree->SetBranchStatus("fTracks.*", kTRUE);
48 tree->SetBranchStatus("Tracks.*", kTRUE);
50 tree->SetBranchStatus("fTriggerMask", kTRUE);
51 tree->SetBranchStatus("AliESDHeader", kTRUE);
53 tree->SetBranchStatus("fSPDVertex*", kTRUE);
54 tree->SetBranchStatus("SPDVertex", kTRUE);
55 //tree->SetBranchStatus("fPosition[3]", kTRUE);
57 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
60 Printf("ERROR: Could not get ESDInputHandler");
62 fESD = esdH->GetEvent();
66 //________________________________________________________________________
67 void AliCutTask::CreateOutputObjects()
75 fOutput->Add(fTrackCuts);
77 fVertex = new TH1F("fVertex", "fVertex;z vtx (cm);Count", 201, -20, 20);
78 fOutput->Add(fVertex);
81 //________________________________________________________________________
82 void AliCutTask::Exec(Option_t *)
85 // Called for each event
88 Printf("ERROR: fESD not available");
95 if (!AliPWG0Helper::IsVertexReconstructed(fESD->GetVertex()))
98 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
99 fTrackCuts->CountAcceptedTracks(fESD);
101 // get the ESD vertex
102 fVertex->Fill(fESD->GetVertex()->GetZv());
105 //________________________________________________________________________
106 void AliCutTask::Terminate(Option_t *)
108 // Draw result to the screen
109 // Called once at the end of the query
111 fOutput = dynamic_cast<TList*> (GetOutputData(0));
113 Printf("ERROR: fOutput not available");
117 fTrackCuts = dynamic_cast<AliESDtrackCuts*> (fOutput->FindObject("AliESDtrackCuts"));
119 Printf("ERROR: fTrackCuts not available");
123 fVertex = dynamic_cast<TH1F*> (fOutput->FindObject("fVertex"));
125 Printf("ERROR: fVertex not available");
129 TFile* file = TFile::Open("trackCuts.root", "RECREATE");
131 fTrackCuts->SaveHistograms();
136 fTrackCuts->DrawHistograms();