]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/T0/AliT0AnalysisTaskQA.cxx
coverity warnings
[u/mrichter/AliRoot.git] / PWG1 / T0 / AliT0AnalysisTaskQA.cxx
CommitLineData
07682040 1#include "TChain.h"
2#include "TTree.h"
3#include "TH1F.h"
4#include "TF1.h"
5#include "TH2F.h"
6#include "TCanvas.h"
7#include "TObjArray.h"
8
9#include "AliAnalysisTask.h"
10#include "AliAnalysisManager.h"
11
12#include "AliESDEvent.h"
13#include "AliESDInputHandler.h"
14
15#include "AliT0AnalysisTaskQA.h"
16
17//#include "AliCDBMetaData.h"
18//#include "AliCDBId.h"
19//#include "AliCDBEntry.h"
20//#include "AliCDBManager.h"
21//#include "AliCDBStorage.h"
22
23// Task should calculate channels offset
24// Authors: Alla
25
26ClassImp(AliT0AnalysisTaskQA)
27//________________________________________________________________________
28AliT0AnalysisTaskQA::AliT0AnalysisTaskQA()
29 : AliAnalysisTaskSE(), fESD(0x0), fTzeroObject(0x0),
30 fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),
31 fRunNumber(0),fTimeVSAmplitude(0x0),fCFDVSPmtId(0x0),fSPDVertexVST0Vertex(0x0),
1be7ae64 32 fOrAvsNtracks(0), fOrCvsNtracks(0), fT0vsNtracks(0),
33 fEffAC(0), fEffA(0), fEffC(0), ftracksEffSPD(0)
34
07682040 35{
36 // Constructor
37
38 // Define input and output slots here
39 // Input slot #0 works with a TChain
40
41// ########### NEVER define slots in the IO constructor
42// DefineInput(0, TChain::Class());
43// DefineOutput(1, TObjArray::Class());
44}
45
46
47//________________________________________________________________________
48AliT0AnalysisTaskQA::AliT0AnalysisTaskQA(const char *name)
49 : AliAnalysisTaskSE(name), fESD(0x0), fTzeroObject(0x0),
50 fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),
51 fRunNumber(0),fTimeVSAmplitude(0x0),fCFDVSPmtId(0x0),fSPDVertexVST0Vertex(0x0),
1be7ae64 52 fOrAvsNtracks(0), fOrCvsNtracks(0), fT0vsNtracks(0),
53 fEffAC(0), fEffA(0), fEffC(0), ftracksEffSPD(0)
54
07682040 55{
56 // Constructor
57 // Define input and output slots here
58 // Input slot #0 works with a TChain
59 DefineInput(0, TChain::Class());
60 DefineOutput(1, TObjArray::Class());
61 // Output slot #0 id reserved by the base class for AOD
62 // Output slot #1 writes into a TH1 container
63}
64
65//________________________________________________________________________
66AliT0AnalysisTaskQA::~AliT0AnalysisTaskQA()
67{
68 // Destructor
69 // printf("AliT0CalibOffsetChannels~AliT0CalibOffsetChannels() ");
70 delete fTzeroObject; // This deletes everything ...
71}
72
73//------------------------------------------------------------------
74void AliT0AnalysisTaskQA::UserCreateOutputObjects()
75{
76 // Create histograms
77 fTimeVSAmplitude = new TH2F*[NPMT0];
78
79 for (Int_t i=0; i<NPMT0; i++) {
1be7ae64 80 fTimeVSAmplitude[i]= new TH2F (Form("fTimeVSAmplitude%d",i+1),"fTimeVsAmplitude",500, 0, 50,1500,1000,7000);
07682040 81 }
82
83 fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",100,-2000,2000); //or A plus or C
84 fResolution = new TH1F("fResolution","fResolution",100,-2000,2000);// or A minus or C spectrum
85 fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",100,-2000,2000);// or A spectrum
86 fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",100,-2000,2000);// or C spectrum
750c312d 87 fCFDVSPmtId = new TH2F("fCFDVSPmtId","fCFDVSPmtId",24,0,24,1500,1000,7000); //
07682040 88 fSPDVertexVST0Vertex = new TH2F("fSPDVertexVST0Vertex","fSPDVertexVST0Vertex",30,-30,30,30,-30,30);
89 fOrAvsNtracks = new TH2F("fAvstracks", "Avstracks",200, 0, 1000, 500, -1000, 1000);
90 fOrCvsNtracks = new TH2F("fCvstracks", "Cvstracks",200, 0, 1000, 500, -1000, 1000);
91 fT0vsNtracks = new TH2F("fT0ACvstrackles", "T0ACvstracks",200, 0, 1000, 500, -1000, 1000);
750c312d 92 fEffAC = new TH1F("EffAC","T0Eff ", 200, 0, 1000);
93 fEffA = new TH1F("EffA","T0AEff ", 200, 0, 1000);
94 fEffC = new TH1F("EffC","T0CEff ", 200, 0, 1000);
95 ftracksEffSPD= new TH1F("ftracksEffSPD","SPDeff", 200, 0, 1000);
07682040 96
97 fTzeroObject = new TObjArray();
98 fTzeroObject->SetOwner(kTRUE);
99
100 for (Int_t i=0; i<24; i++)
101 fTzeroObject->AddAtAndExpand(fTimeVSAmplitude[i],i);
102
103 fTzeroObject->AddAtAndExpand(fCFDVSPmtId,24);
104 fTzeroObject->AddAtAndExpand(fSPDVertexVST0Vertex,25);
105 fTzeroObject->AddAtAndExpand(fTzeroORAplusORC, 26);
106 fTzeroObject->AddAtAndExpand(fResolution, 27);
107 fTzeroObject->AddAtAndExpand(fTzeroORA, 28);
108 fTzeroObject->AddAtAndExpand(fTzeroORC, 29);
109 fTzeroObject->AddAtAndExpand(fT0vsNtracks, 30);
110 fTzeroObject->AddAtAndExpand(fOrAvsNtracks,31);
111 fTzeroObject->AddAtAndExpand(fOrCvsNtracks, 32);
750c312d 112 fTzeroObject->AddAtAndExpand(fEffC, 33);
113 fTzeroObject->AddAtAndExpand(fEffA, 34);
114 fTzeroObject->AddAtAndExpand(fEffAC, 35);
115 fTzeroObject->AddAtAndExpand(ftracksEffSPD, 36);
07682040 116
117 PostData(1, fTzeroObject);
118 // Called once
119}
120
121//________________________________________________________________________
122void AliT0AnalysisTaskQA::UserExec(Option_t *)
123{
124 // Main loop
125 // Called for each event
126
127 // Post output data.
128 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
129 if (!fESD) {
130 printf("ERROR: fESD not available\n");
131 return;
132 }
133
134 fRunNumber = fESD->GetRunNumber() ;
135
136 const Double32_t* time = fESD->GetT0time();
137 const Double32_t* amplitude = fESD->GetT0amplitude();
138
139
140 for (Int_t i=0; i<24; i++) {
141 if(time[i]<9999 &&abs(time[i])>1e-8 && amplitude[i]<9999&&abs(amplitude[i])>1e-8 )
142 {
143 // cout<<"time "<<time[i]<<" amplitude "<<amplitude[i]<<endl;
144 fTimeVSAmplitude[i]->Fill(amplitude[i],time[i]);
145 fCFDVSPmtId->Fill(i,time[i]);
146 }
147 }
148
149 const Double32_t* mean = fESD->GetT0TOF();
150 Double32_t orA = mean[1];
151 Double32_t orC = mean[2];
152 Int_t ntracks = fESD->GetNumberOfTracks();
153
750c312d 154 if(orA<99999){
07682040 155 fTzeroORA->Fill(orA);
156 fOrAvsNtracks->Fill(ntracks, orA);
750c312d 157 fEffA->Fill(ntracks);
07682040 158 }
750c312d 159 if(orC<99999) {
07682040 160 fTzeroORC->Fill(orC);
161 fOrCvsNtracks->Fill(ntracks, orC);
750c312d 162 fEffC->Fill(ntracks);
163 }
164 if(orA<99999 && orC<99999) {
07682040 165 fResolution->Fill((orA-orC)/2.);
166 fTzeroORAplusORC->Fill(mean[0]);
750c312d 167 fEffAC->Fill(ntracks);
07682040 168 fT0vsNtracks->Fill(ntracks, mean[0]);
169 }
170
171 Double32_t t0vertex = fESD->GetT0zVertex();
07682040 172 Double32_t esdzvertex;
173 const AliESDVertex * esdvertex = fESD->GetPrimaryVertex();
174 Int_t nofcontrib=-1;
750c312d 175 nofcontrib=esdvertex->GetNContributors();
176 if(nofcontrib>0) ftracksEffSPD->Fill(ntracks);
177 if(esdvertex && t0vertex<999)
07682040 178 {
750c312d 179 if(nofcontrib>0)
07682040 180 {
181 esdzvertex=esdvertex->GetZv();
07682040 182 fSPDVertexVST0Vertex->Fill(t0vertex,esdzvertex);
183 }
184 }
07682040 185 PostData(1, fTzeroObject);
186}
187 //________________________________________________________________________
188void AliT0AnalysisTaskQA::Terminate(Option_t *)
189{
190
191 // Called once at the end of the query
192}