7 #include "AliAnalysisTaskdEdxSSDQA.h"
8 #include "AliAnalysisManager.h"
10 #include "AliESDEvent.h"
11 #include "AliESDInputHandler.h"
14 #include "AliESDtrack.h"
15 #include "AliExternalTrackParam.h"
16 #include "Riostream.h"
18 #include "AliESDfriend.h"
19 #include "AliESDfriendTrack.h"
20 #include "AliTrackPointArray.h"
21 #include "AliCDBManager.h"
22 #include "AliGeomManager.h"
27 ClassImp(AliAnalysisTaskdEdxSSDQA)
29 //________________________________________________________________________
30 AliAnalysisTaskdEdxSSDQA::AliAnalysisTaskdEdxSSDQA(const char *name)
31 : AliAnalysisTaskSE(name), fHist1(0),fHist2(0),fHist3(0),fListOfHistos(0),fPcut(0.0)
34 // Define input and output slots here
35 // Input slot #1 works with a TChain
36 DefineOutput(1, TList::Class());
39 //________________________________________________________________________
40 void AliAnalysisTaskdEdxSSDQA::UserCreateOutputObjects()
45 fListOfHistos = new TList();
46 fHist1 =new TH2F("QAChargeRatio","QAChargeRatio;Module;CR",1698,-0.5,1697.5,80,-1.0,1.0);
47 fListOfHistos->Add(fHist1);
48 fHist2=new TH2F("QACharge","QACharge;Module;Q",1698,-0.5,1697.5,150,0,300);
49 fListOfHistos->Add(fHist2);
50 fHist3=new TH2F("ChargeRatiovCharge","CRvQ;Q;CR",200,0,2000,100,-1.0,1.0);
51 fListOfHistos->Add(fHist3);
53 //________________________________________________________________________
54 void AliAnalysisTaskdEdxSSDQA::LocalInit()
57 Printf("end of LocalInit");
60 //________________________________________________________________________
62 void AliAnalysisTaskdEdxSSDQA::UserExec(Option_t *)
65 // Called for each event
66 AliESDEvent* esd = dynamic_cast<AliESDEvent*> (InputEvent());
69 Printf("ERROR: Input ESD Event not available");
73 Int_t nTracks=esd->GetNumberOfTracks();
79 Printf("problem with friend");
83 AliTrackPointArray* trackar=0x0;
90 Float_t chargeratio=0.0;
92 for(int itr=0;itr<nTracks;itr++)
94 AliESDtrack* track= esd->GetTrack(itr);
96 if(TMath::Abs(track->Eta())>0.9)
98 if(track->GetP()>10.0)
100 if (track->IsOn(AliESDtrack::kITSrefit)&&track->IsOn(AliESDtrack::kTPCrefit))
102 l5=track->HasPointOnITSLayer(4);
103 l6=track->HasPointOnITSLayer(5);
104 if (!(l5||l6))//only tracks with SSD point
106 Double_t tmpQESD[4]={-1.0,-1.0,-1.0,-1.0};
107 track->GetITSdEdxSamples(tmpQESD);
108 trackar=(AliTrackPointArray*)track->GetTrackPointArray();
111 npoints=trackar->GetNPoints();
112 for(int itnp=0;itnp<npoints;itnp++)
114 if(trackar->GetPoint(point,itnp))
115 nlayer=AliGeomManager::VolUIDToLayer(point.GetVolumeID(), id);//layer number
118 if(nlayer==5||nlayer==6)
120 if(point.GetCharge()>0.0&&point.IsExtra()==kFALSE)//do not use additional clusters
122 chargeratio=point.GetChargeRatio();
123 charge=point.GetCharge();
124 if(nlayer==5&&tmpQESD[2]>0.0)
126 fHist1->Fill(id,chargeratio);
127 if(track->GetP()>fPcut)
128 fHist2->Fill(id,tmpQESD[2]);
130 if(nlayer==6&&tmpQESD[3]>0.0)
132 fHist1->Fill(id+748,chargeratio);
133 if(track->GetP()>fPcut)
134 fHist2->Fill(id+748,tmpQESD[3]);
136 fHist3->Fill(charge,chargeratio);
144 PostData(1, fListOfHistos);
147 //________________________________________________________________________
148 void AliAnalysisTaskdEdxSSDQA::Terminate(Option_t *)
151 Printf("end of Terminate");
153 //_____________________________________________________________________________