1 //#ifndef ALIANALYSISTASKMUONAODCREATION_CXX
2 //#define ALIANALYSISTASKMUONAODCREATION_CXX
10 #include <TClonesArray.h>
13 #include "AliAnalysisTaskMuonAODCreation.h"
14 #include "AliAnalysisTaskSE.h"
15 #include "AliAnalysisManager.h"
16 #include "AliAnalysisDataSlot.h"
17 #include "AliESDEvent.h"
19 #include "AliAODEvent.h"
20 #include "AliAODHeader.h"
21 #include "AliVEvent.h"
22 #include "AliAODHandler.h"
23 #include "AliAODInputHandler.h"
24 #include "AliMCEventHandler.h"
25 #include "AliInputEventHandler.h"
26 #include "AliMCEvent.h"
30 ClassImp(AliAnalysisTaskMuonAODCreation)
32 //__________________________________________________________________________
33 AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation() :
39 //___________________________________________________________________________
40 AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation(const Char_t* name) :
41 AliAnalysisTaskSE(name),
46 // Constructor. Initialization of Inputs and Outputs
49 DefineOutput(1,TList::Class());
53 //___________________________________________________________________________
54 AliAnalysisTaskMuonAODCreation& AliAnalysisTaskMuonAODCreation::operator=(const AliAnalysisTaskMuonAODCreation& c)
57 // Assignment operator
60 AliAnalysisTaskSE::operator=(c) ;
65 //___________________________________________________________________________
66 AliAnalysisTaskMuonAODCreation::AliAnalysisTaskMuonAODCreation(const AliAnalysisTaskMuonAODCreation& c) :
70 fOutputAOD(c.fOutputAOD)
77 //___________________________________________________________________________
78 AliAnalysisTaskMuonAODCreation::~AliAnalysisTaskMuonAODCreation() {
82 Info("~AliAnalysisTaskMuonAODCreation","Calling Destructor");
85 //___________________________________________________________________________
86 void AliAnalysisTaskMuonAODCreation::UserCreateOutputObjects(){
88 AliAODHandler* handler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
90 fOutputAOD = handler->GetAOD();
91 fTree = handler->GetTree();
93 fOutput = new TList();
96 TH1D *pt_alltracks = new TH1D("pt_alltracks","pt_alltracks",10,0,20);
97 TH1D *pt_muontracks = new TH1D("pt_muontracks","pt_muontracks",10,0,20);
99 fOutput->Add(pt_alltracks);
100 fOutput->Add(pt_muontracks);
106 //_________________________________________________
107 void AliAnalysisTaskMuonAODCreation::UserExec(Option_t *)
110 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
112 AliError("Cannot get AOD event");
118 for (Int_t j = 0; j<aod->GetNumberOfTracks(); j++) {
119 AliAODTrack *track = aod->GetTrack(j);
120 ((TH1D*)(fOutput->FindObject("pt_alltracks")))->Fill(track->Pt());
121 if(track->IsMuonTrack()) {
123 ((TH1D*)(fOutput->FindObject("pt_muontracks")))->Fill(track->Pt());
127 AliAODHandler* outputHandler = (AliAODHandler*)
128 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
130 outputHandler->SetFillAOD(kFALSE);
133 outputHandler->SetFillAOD(kTRUE);
143 //________________________________________________________________________
144 void AliAnalysisTaskMuonAODCreation::Terminate(Option_t *)
146 TCanvas *c = new TCanvas("c","plots",20,20,600,600);
149 TH1D *h_pt_all = dynamic_cast<TH1D*> (fOutput->FindObject("pt_alltracks"));
150 TH1D *h_pt_muons = dynamic_cast<TH1D*> (fOutput->FindObject("pt_muontracks"));
152 if (h_pt_all) h_pt_all->Draw();
154 if (h_pt_muons) h_pt_muons->Draw();
156 if (h_pt_all) h_pt_all->Draw();
157 if (h_pt_muons) h_pt_muons->Draw("same");