4 #include "TSeqCollection.h"
8 #include "TMCProcess.h"
9 #include "TLorentzVector.h"
10 #include "TDirectory.h"
15 #include "AliVParticle.h"
16 #include "AliMCParticle.h"
18 #include "AliVEvent.h"
19 #include "AliESDEvent.h"
20 #include "AliMCEvent.h"
21 #include "AliESDVZERO.h"
22 #include "AliESDZDC.h"
23 #include "AliESDtrack.h"
24 #include "AliFlowTrackCuts.h"
25 #include "AliFlowEventCuts.h"
26 #include "AliMultiplicity.h"
27 #include "AliESDtrackCuts.h"
28 #include "AliVertex.h"
29 #include "AliFlowEventSimple.h"
30 #include "AliFlowEvent.h"
31 #include "AliFlowVector.h"
32 #include "AliESDPmdTrack.h"
33 #include "AliAnalysisTaskSE.h"
34 #include "AliAnalysisManager.h"
35 #include "AliInputEventHandler.h"
37 #include "AliAnalysisTaskQAPmdflow.h"
39 ClassImp(AliAnalysisTaskQAPmdflow)
41 //________________________________________________________________________
42 AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow()
43 : AliAnalysisTaskSE(),
49 // Default constructor
52 //________________________________________________________________________
53 AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow(const char* name)
54 : AliAnalysisTaskSE(name),
61 DefineOutput(1, TObjArray::Class());
64 //________________________________________________________________________
65 void AliAnalysisTaskQAPmdflow::UserCreateOutputObjects()
67 // Called once at the beginning
68 fOutput=new TObjArray();
71 TH1F* histB = new TH1F("PMD ADC cutB","PMD ADC cutB",500,0,10000);
74 TH1F* histA = new TH1F("PMD ADC cutA","PMD ADC cutA",500,0,10000);
77 TH1F* histCelB = new TH1F("PMD ncell CutB", "PMD ncell CutB",100,0,100);
78 fOutput->Add(histCelB);
79 TH1F* histCelA = new TH1F("PMD ncell CutA", "PMD ncell CutA",100,0,100);
80 fOutput->Add(histCelA);
82 //post data here as it doesn't change anyway (the pointer to list anyway)
87 //________________________________________________________________________
88 void AliAnalysisTaskQAPmdflow::UserExec(Option_t *)
91 AliESDEvent* event = dynamic_cast<AliESDEvent*>(InputEvent());
94 AliFatal("no ESD event");
98 fRPTrackCuts->SetEvent(event);
100 AliFlowTrackCuts::trackParameterType sourceRP = fRPTrackCuts->GetParamType();
101 AliFlowTrackCuts::trackParameterType sourcePOI = fPOITrackCuts->GetParamType();
102 Bool_t PmdTrRp = kFALSE;
103 Bool_t PmdTrPoi = kFALSE;
105 if(sourcePOI == 4) PmdTrPoi = kTRUE;
106 if(sourceRP == 4) PmdTrRp = kTRUE;
107 if((!PmdTrPoi) && (!PmdTrRp))
109 printf("Error : PMD track is not used as POI or RP");
113 TH1F* hPmdAdcB = static_cast<TH1F*>(fOutput->At(0));
114 TH1F* hPmdAdcA = static_cast<TH1F*>(fOutput->At(1));
115 TH1F* hPmdNcelB = static_cast<TH1F*>(fOutput->At(2));
116 TH1F* hPmdNcelA = static_cast<TH1F*>(fOutput->At(3));
118 //Bool_t passevent = fEventCuts->IsSelected(event);
119 //Bool_t isSelectedEventSelection = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
123 if(PmdTrRp) ntracks = fRPTrackCuts->GetNumberOfInputObjects();
124 if(PmdTrPoi) ntracks = fPOITrackCuts->GetNumberOfInputObjects();
126 for (Int_t i=0; i < ntracks; i++)
128 Bool_t pass = kFALSE;
131 obj = fPOITrackCuts->GetInputObject(i);
133 pass = fPOITrackCuts->IsSelected(obj,i);
137 obj = fRPTrackCuts->GetInputObject(i);
139 pass = fRPTrackCuts->IsSelected(obj,i);
141 AliESDPmdTrack* trackpmd = dynamic_cast<AliESDPmdTrack*>(obj);
144 Int_t det = trackpmd->GetDetector();
145 Float_t adc = trackpmd->GetClusterADC();
146 Float_t ncel = trackpmd->GetClusterCells();
148 hPmdAdcB->Fill(adc); if(pass) hPmdAdcA->Fill(adc);
149 hPmdNcelB->Fill(ncel); if(pass) hPmdNcelA->Fill(ncel);
155 //________________________________________________________________________
156 void AliAnalysisTaskQAPmdflow::Terminate(Option_t *)
162 //________________________________________________________________________
163 AliAnalysisTaskQAPmdflow::~AliAnalysisTaskQAPmdflow()
167 delete fPOITrackCuts;