#include "TChain.h" #include "TList.h" #include "TH1F.h" #include "TROOT.h" #include "AliAODEvent.h" #include "AliAnalysisTaskSE.h" #include "AliAnalysisManager.h" #include "AliAODTrack.h" #include "AliAODInputHandler.h" #include "AliAnalysisTaskPtSpectra.h" #include // Analysis task for pT spectrum using std::cout; using std::endl; ClassImp(AliAnalysisTaskPtSpectra) //________________________________________________________________________ AliAnalysisTaskPtSpectra::AliAnalysisTaskPtSpectra(const char *name) : AliAnalysisTaskSE(name), fList(0), fHistPt(0) { // Constructor // Define input and output slots here // Input slot #0 works with a TChain DefineInput(0, TChain::Class()); // Output slot #0 writes into a TH1 container DefineOutput(1, TList::Class()); } //________________________________________________________________________ AliAnalysisTaskPtSpectra::~AliAnalysisTaskPtSpectra() { // } //________________________________________________________________________ void AliAnalysisTaskPtSpectra::UserCreateOutputObjects() { // Create histograms // Called once // global switch disabling the reference // (to avoid "Replacing existing TH1" if several wagons are created in train) Bool_t oldStatus = TH1::AddDirectoryStatus(); TH1::AddDirectory(kFALSE); ///Output list fList = new TList(); fList->SetName("outputList"); fList->SetOwner(); fHistPt = new TH1F("fHistPt","pT spectrum; p_{T} (GeV/c);",100,0,10.); fList->Add(fHistPt); PostData(1, fList); } //________________________________________________________________________ void AliAnalysisTaskPtSpectra::UserExec(Option_t *) { // Main loop // Called for each event // get the event (for generator level: MCEvent()) //AliVEvent* eventMain = NULL; //eventMain = dynamic_cast(InputEvent()); AliAODEvent *event = dynamic_cast(InputEvent()); if(!event) { AliError("eventMain not available"); return; } // Loop over tracks in event for (Int_t iTracks = 0; iTracks < event->GetNumberOfTracks(); iTracks++) { AliAODTrack* aodTrack = dynamic_cast(event->GetTrack(iTracks)); if (!aodTrack) { AliError(Form("Could not receive track %d", iTracks)); continue; } // AOD track cuts //if(!aodTrack->TestFilterBit(fnAODtrackCutBit)) continue; fHistPt->Fill(aodTrack->Pt()); }//loop over AOD tracks PostData(1, fList); } //________________________________________________________________________ void AliAnalysisTaskPtSpectra::FinishTaskOutput(){ // } //________________________________________________________________________ void AliAnalysisTaskPtSpectra::Terminate(Option_t *) { // Draw result to the screen // Called once at the end of the query // not implemented ... }