#include "TMath.h" #include "TH1D.h" #include "TH2D.h" #include "TSeqCollection.h" #include "TObjArray.h" #include "TObjArray.h" #include "TChain.h" #include "TMCProcess.h" #include "TLorentzVector.h" #include "TDirectory.h" #include "TROOT.h" #include "TNtuple.h" #include "AliLog.h" #include "AliVParticle.h" #include "AliMCParticle.h" #include "AliStack.h" #include "AliVEvent.h" #include "AliESDEvent.h" #include "AliMCEvent.h" #include "AliESDVZERO.h" #include "AliESDZDC.h" #include "AliESDtrack.h" #include "AliFlowTrackCuts.h" #include "AliFlowEventCuts.h" #include "AliMultiplicity.h" #include "AliESDtrackCuts.h" #include "AliVertex.h" #include "AliFlowEventSimple.h" #include "AliFlowEvent.h" #include "AliFlowVector.h" #include "AliESDPmdTrack.h" #include "AliAnalysisTaskSE.h" #include "AliAnalysisManager.h" #include "AliInputEventHandler.h" #include "AliAnalysisTaskQAPmdflow.h" ClassImp(AliAnalysisTaskQAPmdflow) //________________________________________________________________________ AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow() : AliAnalysisTaskSE(), fOutput(NULL), fEventCuts(NULL), fRPTrackCuts(NULL), fPOITrackCuts(NULL) { // Default constructor } //________________________________________________________________________ AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow(const char* name) : AliAnalysisTaskSE(name), fOutput(NULL), fEventCuts(NULL), fRPTrackCuts(NULL), fPOITrackCuts(NULL) { // Constructor DefineOutput(1, TObjArray::Class()); } //________________________________________________________________________ void AliAnalysisTaskQAPmdflow::UserCreateOutputObjects() { // Called once at the beginning fOutput=new TObjArray(); //define histograms TH1F* histB = new TH1F("PMD ADC cutB","PMD ADC cutB",500,0,10000); fOutput->Add(histB); TH1F* histA = new TH1F("PMD ADC cutA","PMD ADC cutA",500,0,10000); fOutput->Add(histA); TH1F* histCelB = new TH1F("PMD ncell CutB", "PMD ncell CutB",100,0,100); fOutput->Add(histCelB); TH1F* histCelA = new TH1F("PMD ncell CutA", "PMD ncell CutA",100,0,100); fOutput->Add(histCelA); //post data here as it doesn't change anyway (the pointer to list anyway) PostData(1, fOutput); } //________________________________________________________________________ void AliAnalysisTaskQAPmdflow::UserExec(Option_t *) { //get teh input data AliESDEvent* event = dynamic_cast(InputEvent()); if (!event) { AliFatal("no ESD event"); return; } fRPTrackCuts->SetEvent(event); AliFlowTrackCuts::trackParameterType sourceRP = fRPTrackCuts->GetParamType(); AliFlowTrackCuts::trackParameterType sourcePOI = fPOITrackCuts->GetParamType(); Bool_t PmdTrRp = kFALSE; Bool_t PmdTrPoi = kFALSE; if(sourcePOI == 4) PmdTrPoi = kTRUE; if(sourceRP == 4) PmdTrRp = kTRUE; if((!PmdTrPoi) && (!PmdTrRp)) { printf("Error : PMD track is not used as POI or RP"); return; } TH1F* hPmdAdcB = static_cast(fOutput->At(0)); TH1F* hPmdAdcA = static_cast(fOutput->At(1)); TH1F* hPmdNcelB = static_cast(fOutput->At(2)); TH1F* hPmdNcelA = static_cast(fOutput->At(3)); //Bool_t passevent = fEventCuts->IsSelected(event); //Bool_t isSelectedEventSelection = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB); Int_t ntracks = 0; if(PmdTrRp) ntracks = fRPTrackCuts->GetNumberOfInputObjects(); if(PmdTrPoi) ntracks = fPOITrackCuts->GetNumberOfInputObjects(); for (Int_t i=0; i < ntracks; i++) { Bool_t pass = kFALSE; TObject* obj = 0x0; if(PmdTrPoi){ obj = fPOITrackCuts->GetInputObject(i); if (!obj) continue; pass = fPOITrackCuts->IsSelected(obj,i); } if(PmdTrRp){ obj = fRPTrackCuts->GetInputObject(i); if (!obj) continue; pass = fRPTrackCuts->IsSelected(obj,i); } AliESDPmdTrack* trackpmd = dynamic_cast(obj); if (trackpmd) { Int_t det = trackpmd->GetDetector(); Float_t adc = trackpmd->GetClusterADC(); Float_t ncel = trackpmd->GetClusterCells(); if(det == 0){ hPmdAdcB->Fill(adc); if(pass) hPmdAdcA->Fill(adc); hPmdNcelB->Fill(ncel); if(pass) hPmdNcelA->Fill(ncel); } } } } //________________________________________________________________________ void AliAnalysisTaskQAPmdflow::Terminate(Option_t *) { //terminate } //________________________________________________________________________ AliAnalysisTaskQAPmdflow::~AliAnalysisTaskQAPmdflow() { //dtor delete fRPTrackCuts; delete fPOITrackCuts; delete fEventCuts; }