#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TF1.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "TObjArray.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliT0AnalysisTaskQA.h"
#include "AliESDpid.h"
ClassImp(AliT0AnalysisTaskQA)
AliT0AnalysisTaskQA::AliT0AnalysisTaskQA()
: AliAnalysisTaskSE(), fESD(0x0), fTzeroObject(0x0),
fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0), fTzeroTof(0x0),
fRunNumber(0),fTimeVSAmplitude(0x0),fCFDVSPmtId(0x0),fSPDVertexVST0Vertex(0x0),
fOrAvsNtracks(0x0), fOrCvsNtracks(0x0), fT0vsNtracks(0x0),fT0TimevsT0Tof(0x0),
fESDpid(new AliESDpid())
{
}
AliT0AnalysisTaskQA::AliT0AnalysisTaskQA(const char *name)
: AliAnalysisTaskSE(name), fESD(0x0), fTzeroObject(0x0),
fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0), fTzeroTof(0x0),
fRunNumber(0),fTimeVSAmplitude(0x0),fCFDVSPmtId(0x0),fSPDVertexVST0Vertex(0x0),
fOrAvsNtracks(0x0), fOrCvsNtracks(0x0), fT0vsNtracks(0x0),fT0TimevsT0Tof(0x0),
fESDpid(new AliESDpid())
{
DefineInput(0, TChain::Class());
DefineOutput(1, TObjArray::Class());
}
AliT0AnalysisTaskQA::~AliT0AnalysisTaskQA()
{
delete fTzeroORA;
delete fTzeroORC;
delete fResolution;
delete fTzeroORAplusORC;
delete fTzeroTof;
delete [] fTimeVSAmplitude;
delete fCFDVSPmtId;
delete fSPDVertexVST0Vertex;
delete fOrAvsNtracks;
delete fOrCvsNtracks;
delete fT0vsNtracks;
delete fT0TimevsT0Tof;
delete fESDpid;
delete fTzeroObject;
}
void AliT0AnalysisTaskQA::UserCreateOutputObjects()
{
fTimeVSAmplitude = new TH2F*[kNPMT0];
for (Int_t i=0; i<kNPMT0; i++) {
fTimeVSAmplitude[i]= new TH2F (Form("fTimeVSAmplitude%d",i+1),"fTimeVsAmplitude",60, -10, 50,500,2000,7000);
}
fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",100,-2000,2000);
fTzeroTof = new TH1F("fTzeroTof","t0 from TOF",100,-2000,2000);
fResolution = new TH1F("fResolution","fResolution",100,-500,500);
fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",100,-2000,2000);
fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",100,-2000,2000);
fCFDVSPmtId = new TH2F("fCFDVSPmtId","fCFDVSPmtId",24,0,24,500,2000,7000);
fSPDVertexVST0Vertex = new TH2F("fSPDVertexVST0Vertex","fSPDVertexVST0Vertex",30,-30,30,30,-30,30);
fOrAvsNtracks = new TH2F("fAvstracks", "A vs tracks",200, 0, 1000, 200, -1000, 1000);
fOrCvsNtracks = new TH2F("fCvstracks", "C vs tracks",200, 0, 1000, 200, -1000, 1000);
fT0vsNtracks = new TH2F("fT0ACvstrackes", "T0AC vs tracks",200, 0, 1000, 200, -1000, 1000);
fT0TimevsT0Tof = new TH2F("fT0TimevsT0Tof", "fT0TimevsT0Tof",50, -1000,1000, 50, -1000,1000);
fTzeroObject = new TObjArray(0);
fTzeroObject->SetOwner(kTRUE);
for (Int_t i=0; i<kNPMT0; i++)
fTzeroObject->AddAtAndExpand(fTimeVSAmplitude[i],i);
fTzeroObject->AddAtAndExpand(fCFDVSPmtId,24);
fTzeroObject->AddAtAndExpand(fSPDVertexVST0Vertex,25);
fTzeroObject->AddAtAndExpand(fTzeroORAplusORC, 26);
fTzeroObject->AddAtAndExpand(fResolution, 27);
fTzeroObject->AddAtAndExpand(fTzeroORA, 28);
fTzeroObject->AddAtAndExpand(fTzeroORC, 29);
fTzeroObject->AddAtAndExpand(fT0vsNtracks, 30);
fTzeroObject->AddAtAndExpand(fOrAvsNtracks,31);
fTzeroObject->AddAtAndExpand(fOrCvsNtracks, 32);
fTzeroObject->AddAtAndExpand(fTzeroTof, 33);
fTzeroObject->AddAtAndExpand(fT0TimevsT0Tof, 34);
PostData(1, fTzeroObject);
}
void AliT0AnalysisTaskQA::UserExec(Option_t *)
{
fESD = dynamic_cast<AliESDEvent*>(InputEvent());
if (!fESD) {
printf("ERROR: fESD not available\n");
return;
}
fRunNumber = fESD->GetRunNumber() ;
const Double32_t* time = fESD->GetT0time();
const Double32_t* amplitude = fESD->GetT0amplitude();
for (Int_t i=0; i<kNPMT0; i++) {
if(time[i]<9999 &&abs(time[i])>1e-8 && amplitude[i]<9999&&abs(amplitude[i])>1e-8 )
{
fTimeVSAmplitude[i]->Fill(amplitude[i],time[i]);
fCFDVSPmtId->Fill(i,time[i]);
}
}
const Double32_t* mean = fESD->GetT0TOF();
Double32_t orA = mean[1];
Double32_t orC = mean[2];
Int_t ntracks = fESD->GetNumberOfTracks();
Int_t ntracksMatchedToTOF = 0;
for(Int_t itrk=0;itrk<ntracks;itrk++){
AliESDtrack* track = fESD->GetTrack(itrk);
if (!track) {
Printf("ERROR: Could not receive track %d", itrk);
continue;
}
if (track->IsOn(AliESDtrack::kTOFout)) ntracksMatchedToTOF++;
}
if(orA<9999){
fTzeroORA->Fill(orA);
fOrAvsNtracks->Fill(ntracksMatchedToTOF, orA);
}
if(orC<9999) {
fTzeroORC->Fill(orC);
fOrCvsNtracks->Fill(ntracksMatchedToTOF, orC);
}
if(orA<9999 && orC<9999) {
fResolution->Fill((orA-orC)/2.);
fTzeroORAplusORC->Fill(mean[0]);
fT0vsNtracks->Fill(ntracksMatchedToTOF, mean[0]);
}
if(fESDpid){
fESDpid->SetTOFResponse(fESD,AliESDpid::kTOF_T0);
Float_t t0tofTrack =(Float_t) (fESDpid->GetTOFResponse().GetStartTime(10.0));
if (t0tofTrack !=0) fTzeroTof->Fill(t0tofTrack);
if(orA<9999 && orC<9999 && t0tofTrack !=0){
fT0TimevsT0Tof->Fill(t0tofTrack, mean[0]);
}
}
Double32_t t0vertex = fESD->GetT0zVertex();
Double32_t esdzvertex;
const AliESDVertex * esdvertex = fESD->GetPrimaryVertex();
Int_t nofcontrib=-1;
if(esdvertex && t0vertex<999)
{
nofcontrib=esdvertex->GetNContributors();
if(nofcontrib>1)
{
esdzvertex=esdvertex->GetZ();
fSPDVertexVST0Vertex->Fill(t0vertex,esdzvertex);
}
}
PostData(1, fTzeroObject);
}
void AliT0AnalysisTaskQA::Terminate(Option_t *)
{
}
AliT0AnalysisTaskQA.cxx:1 AliT0AnalysisTaskQA.cxx:2 AliT0AnalysisTaskQA.cxx:3 AliT0AnalysisTaskQA.cxx:4 AliT0AnalysisTaskQA.cxx:5 AliT0AnalysisTaskQA.cxx:6 AliT0AnalysisTaskQA.cxx:7 AliT0AnalysisTaskQA.cxx:8 AliT0AnalysisTaskQA.cxx:9 AliT0AnalysisTaskQA.cxx:10 AliT0AnalysisTaskQA.cxx:11 AliT0AnalysisTaskQA.cxx:12 AliT0AnalysisTaskQA.cxx:13 AliT0AnalysisTaskQA.cxx:14 AliT0AnalysisTaskQA.cxx:15 AliT0AnalysisTaskQA.cxx:16 AliT0AnalysisTaskQA.cxx:17 AliT0AnalysisTaskQA.cxx:18 AliT0AnalysisTaskQA.cxx:19 AliT0AnalysisTaskQA.cxx:20 AliT0AnalysisTaskQA.cxx:21 AliT0AnalysisTaskQA.cxx:22 AliT0AnalysisTaskQA.cxx:23 AliT0AnalysisTaskQA.cxx:24 AliT0AnalysisTaskQA.cxx:25 AliT0AnalysisTaskQA.cxx:26 AliT0AnalysisTaskQA.cxx:27 AliT0AnalysisTaskQA.cxx:28 AliT0AnalysisTaskQA.cxx:29 AliT0AnalysisTaskQA.cxx:30 AliT0AnalysisTaskQA.cxx:31 AliT0AnalysisTaskQA.cxx:32 AliT0AnalysisTaskQA.cxx:33 AliT0AnalysisTaskQA.cxx:34 AliT0AnalysisTaskQA.cxx:35 AliT0AnalysisTaskQA.cxx:36 AliT0AnalysisTaskQA.cxx:37 AliT0AnalysisTaskQA.cxx:38 AliT0AnalysisTaskQA.cxx:39 AliT0AnalysisTaskQA.cxx:40 AliT0AnalysisTaskQA.cxx:41 AliT0AnalysisTaskQA.cxx:42 AliT0AnalysisTaskQA.cxx:43 AliT0AnalysisTaskQA.cxx:44 AliT0AnalysisTaskQA.cxx:45 AliT0AnalysisTaskQA.cxx:46 AliT0AnalysisTaskQA.cxx:47 AliT0AnalysisTaskQA.cxx:48 AliT0AnalysisTaskQA.cxx:49 AliT0AnalysisTaskQA.cxx:50 AliT0AnalysisTaskQA.cxx:51 AliT0AnalysisTaskQA.cxx:52 AliT0AnalysisTaskQA.cxx:53 AliT0AnalysisTaskQA.cxx:54 AliT0AnalysisTaskQA.cxx:55 AliT0AnalysisTaskQA.cxx:56 AliT0AnalysisTaskQA.cxx:57 AliT0AnalysisTaskQA.cxx:58 AliT0AnalysisTaskQA.cxx:59 AliT0AnalysisTaskQA.cxx:60 AliT0AnalysisTaskQA.cxx:61 AliT0AnalysisTaskQA.cxx:62 AliT0AnalysisTaskQA.cxx:63 AliT0AnalysisTaskQA.cxx:64 AliT0AnalysisTaskQA.cxx:65 AliT0AnalysisTaskQA.cxx:66 AliT0AnalysisTaskQA.cxx:67 AliT0AnalysisTaskQA.cxx:68 AliT0AnalysisTaskQA.cxx:69 AliT0AnalysisTaskQA.cxx:70 AliT0AnalysisTaskQA.cxx:71 AliT0AnalysisTaskQA.cxx:72 AliT0AnalysisTaskQA.cxx:73 AliT0AnalysisTaskQA.cxx:74 AliT0AnalysisTaskQA.cxx:75 AliT0AnalysisTaskQA.cxx:76 AliT0AnalysisTaskQA.cxx:77 AliT0AnalysisTaskQA.cxx:78 AliT0AnalysisTaskQA.cxx:79 AliT0AnalysisTaskQA.cxx:80 AliT0AnalysisTaskQA.cxx:81 AliT0AnalysisTaskQA.cxx:82 AliT0AnalysisTaskQA.cxx:83 AliT0AnalysisTaskQA.cxx:84 AliT0AnalysisTaskQA.cxx:85 AliT0AnalysisTaskQA.cxx:86 AliT0AnalysisTaskQA.cxx:87 AliT0AnalysisTaskQA.cxx:88 AliT0AnalysisTaskQA.cxx:89 AliT0AnalysisTaskQA.cxx:90 AliT0AnalysisTaskQA.cxx:91 AliT0AnalysisTaskQA.cxx:92 AliT0AnalysisTaskQA.cxx:93 AliT0AnalysisTaskQA.cxx:94 AliT0AnalysisTaskQA.cxx:95 AliT0AnalysisTaskQA.cxx:96 AliT0AnalysisTaskQA.cxx:97 AliT0AnalysisTaskQA.cxx:98 AliT0AnalysisTaskQA.cxx:99 AliT0AnalysisTaskQA.cxx:100 AliT0AnalysisTaskQA.cxx:101 AliT0AnalysisTaskQA.cxx:102 AliT0AnalysisTaskQA.cxx:103 AliT0AnalysisTaskQA.cxx:104 AliT0AnalysisTaskQA.cxx:105 AliT0AnalysisTaskQA.cxx:106 AliT0AnalysisTaskQA.cxx:107 AliT0AnalysisTaskQA.cxx:108 AliT0AnalysisTaskQA.cxx:109 AliT0AnalysisTaskQA.cxx:110 AliT0AnalysisTaskQA.cxx:111 AliT0AnalysisTaskQA.cxx:112 AliT0AnalysisTaskQA.cxx:113 AliT0AnalysisTaskQA.cxx:114 AliT0AnalysisTaskQA.cxx:115 AliT0AnalysisTaskQA.cxx:116 AliT0AnalysisTaskQA.cxx:117 AliT0AnalysisTaskQA.cxx:118 AliT0AnalysisTaskQA.cxx:119 AliT0AnalysisTaskQA.cxx:120 AliT0AnalysisTaskQA.cxx:121 AliT0AnalysisTaskQA.cxx:122 AliT0AnalysisTaskQA.cxx:123 AliT0AnalysisTaskQA.cxx:124 AliT0AnalysisTaskQA.cxx:125 AliT0AnalysisTaskQA.cxx:126 AliT0AnalysisTaskQA.cxx:127 AliT0AnalysisTaskQA.cxx:128 AliT0AnalysisTaskQA.cxx:129 AliT0AnalysisTaskQA.cxx:130 AliT0AnalysisTaskQA.cxx:131 AliT0AnalysisTaskQA.cxx:132 AliT0AnalysisTaskQA.cxx:133 AliT0AnalysisTaskQA.cxx:134 AliT0AnalysisTaskQA.cxx:135 AliT0AnalysisTaskQA.cxx:136 AliT0AnalysisTaskQA.cxx:137 AliT0AnalysisTaskQA.cxx:138 AliT0AnalysisTaskQA.cxx:139 AliT0AnalysisTaskQA.cxx:140 AliT0AnalysisTaskQA.cxx:141 AliT0AnalysisTaskQA.cxx:142 AliT0AnalysisTaskQA.cxx:143 AliT0AnalysisTaskQA.cxx:144 AliT0AnalysisTaskQA.cxx:145 AliT0AnalysisTaskQA.cxx:146 AliT0AnalysisTaskQA.cxx:147 AliT0AnalysisTaskQA.cxx:148 AliT0AnalysisTaskQA.cxx:149 AliT0AnalysisTaskQA.cxx:150 AliT0AnalysisTaskQA.cxx:151 AliT0AnalysisTaskQA.cxx:152 AliT0AnalysisTaskQA.cxx:153 AliT0AnalysisTaskQA.cxx:154 AliT0AnalysisTaskQA.cxx:155 AliT0AnalysisTaskQA.cxx:156 AliT0AnalysisTaskQA.cxx:157 AliT0AnalysisTaskQA.cxx:158 AliT0AnalysisTaskQA.cxx:159 AliT0AnalysisTaskQA.cxx:160 AliT0AnalysisTaskQA.cxx:161 AliT0AnalysisTaskQA.cxx:162 AliT0AnalysisTaskQA.cxx:163 AliT0AnalysisTaskQA.cxx:164 AliT0AnalysisTaskQA.cxx:165 AliT0AnalysisTaskQA.cxx:166 AliT0AnalysisTaskQA.cxx:167 AliT0AnalysisTaskQA.cxx:168 AliT0AnalysisTaskQA.cxx:169 AliT0AnalysisTaskQA.cxx:170 AliT0AnalysisTaskQA.cxx:171 AliT0AnalysisTaskQA.cxx:172 AliT0AnalysisTaskQA.cxx:173 AliT0AnalysisTaskQA.cxx:174 AliT0AnalysisTaskQA.cxx:175 AliT0AnalysisTaskQA.cxx:176 AliT0AnalysisTaskQA.cxx:177 AliT0AnalysisTaskQA.cxx:178 AliT0AnalysisTaskQA.cxx:179 AliT0AnalysisTaskQA.cxx:180 AliT0AnalysisTaskQA.cxx:181 AliT0AnalysisTaskQA.cxx:182 AliT0AnalysisTaskQA.cxx:183 AliT0AnalysisTaskQA.cxx:184 AliT0AnalysisTaskQA.cxx:185 AliT0AnalysisTaskQA.cxx:186 AliT0AnalysisTaskQA.cxx:187 AliT0AnalysisTaskQA.cxx:188 AliT0AnalysisTaskQA.cxx:189 AliT0AnalysisTaskQA.cxx:190 AliT0AnalysisTaskQA.cxx:191 AliT0AnalysisTaskQA.cxx:192 AliT0AnalysisTaskQA.cxx:193 AliT0AnalysisTaskQA.cxx:194 AliT0AnalysisTaskQA.cxx:195 AliT0AnalysisTaskQA.cxx:196 AliT0AnalysisTaskQA.cxx:197 AliT0AnalysisTaskQA.cxx:198 AliT0AnalysisTaskQA.cxx:199 AliT0AnalysisTaskQA.cxx:200 AliT0AnalysisTaskQA.cxx:201 AliT0AnalysisTaskQA.cxx:202 AliT0AnalysisTaskQA.cxx:203 AliT0AnalysisTaskQA.cxx:204 AliT0AnalysisTaskQA.cxx:205 AliT0AnalysisTaskQA.cxx:206 AliT0AnalysisTaskQA.cxx:207 AliT0AnalysisTaskQA.cxx:208 AliT0AnalysisTaskQA.cxx:209 AliT0AnalysisTaskQA.cxx:210 AliT0AnalysisTaskQA.cxx:211 AliT0AnalysisTaskQA.cxx:212 AliT0AnalysisTaskQA.cxx:213 AliT0AnalysisTaskQA.cxx:214 AliT0AnalysisTaskQA.cxx:215 AliT0AnalysisTaskQA.cxx:216 AliT0AnalysisTaskQA.cxx:217 AliT0AnalysisTaskQA.cxx:218 AliT0AnalysisTaskQA.cxx:219 AliT0AnalysisTaskQA.cxx:220 AliT0AnalysisTaskQA.cxx:221 AliT0AnalysisTaskQA.cxx:222