]> git.uio.no Git - u/mrichter/AliRoot.git/blame - T0/AliT0CalibOffsetChannelsTask.cxx
new reconstruction with pass0 calibration
[u/mrichter/AliRoot.git] / T0 / AliT0CalibOffsetChannelsTask.cxx
CommitLineData
b5e0299c 1#include "TChain.h"\r
2#include "TTree.h"\r
3#include "TH1D.h"\r
4#include "TF1.h"\r
5#include "TCanvas.h"\r
6#include "TObjArray.h"\r
7\r
8#include "AliAnalysisTask.h"\r
9#include "AliAnalysisManager.h"\r
10\r
11#include "AliESDEvent.h"\r
12#include "AliESDInputHandler.h"\r
13\r
14#include "AliT0CalibOffsetChannelsTask.h"\r
15\r
16//#include "AliCDBMetaData.h"\r
17//#include "AliCDBId.h"\r
18//#include "AliCDBEntry.h"\r
19//#include "AliCDBManager.h"\r
20//#include "AliCDBStorage.h"\r
21\r
22// Task should calculate channels offset \r
23// Authors: Alla \r
24\r
25ClassImp(AliT0CalibOffsetChannelsTask)\r
26//________________________________________________________________________\r
27AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask() \r
28 : AliAnalysisTaskSE(), fESD(0x0), fTzeroObject(0x0),\r
29 fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),\r
30 fRunNumber(0)\r
31{\r
32 // Constructor\r
33\r
34 for( int ip=0; ip < 24; ip++){\r
35 fTimeDiff[ip] = 0;\r
36 fCFD[ip] = 0;\r
37 }\r
38\r
39 // Define input and output slots here\r
40 // Input slot #0 works with a TChain\r
41 // DefineInput(0, TChain::Class());\r
42 // DefineOutput(1, TObjArray::Class());\r
43}\r
44\r
45\r
46//________________________________________________________________________\r
47AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask(const char *name) \r
48 : AliAnalysisTaskSE(name), fESD(0), fTzeroObject(0),\r
49 fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),\r
50 fRunNumber(0)\r
51{\r
52 // Constructor\r
53 \r
54 for( int ip=0; ip < 24; ip++){\r
55 fTimeDiff[ip] = 0;\r
56 fCFD[ip] = 0;\r
57 }\r
58 \r
59 // Define input and output slots here\r
60 // Input slot #0 works with a TChain\r
61 DefineInput(0, TChain::Class());\r
62 DefineOutput(1, TObjArray::Class());\r
63 // Output slot #0 id reserved by the base class for AOD\r
64 // Output slot #1 writes into a TH1 container\r
65}\r
66\r
67//________________________________________________________________________\r
68AliT0CalibOffsetChannelsTask::~AliT0CalibOffsetChannelsTask() \r
69{\r
70 // Destructor\r
71 // printf("AliT0CalibOffsetChannels~AliT0CalibOffsetChannels() ");\r
72 delete fTzeroORA;\r
73 delete fTzeroORC;\r
74 delete fResolution;\r
75 delete fTzeroORAplusORC;\r
612737bb 76 delete [] fTimeDiff;\r
77 delete [] fCFD;\r
78\r
b5e0299c 79 delete fTzeroObject;\r
80}\r
81\r
82//________________________________________________________________________\r
83/*void AliT0CalibOffsetChannelsTaskX::ConnectInputData(Option_t *) {\r
84 //\r
85 //\r
86 //\r
87 TTree* tree=dynamic_cast<TTree*>(GetInputData(0));\r
88 if (!tree) {\r
89 printf("ERROR: Could not read chain from input slot 0");\r
90 } \r
91 else {\r
92 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
93 if (!esdH) {\r
94 printf ("ERROR: Could not get ESDInputHandler");\r
95 } \r
96 else {\r
97 fESD = esdH->GetEvent();\r
98 printf ("*** CONNECTED NEW EVENT ****");\r
99 }\r
100 }\r
101}\r
102*/\r
103//________________________________________________________________________\r
104void AliT0CalibOffsetChannelsTask::UserCreateOutputObjects()\r
105{\r
106 // Create histograms\r
107 for (Int_t i=0; i<24; i++) {\r
108 fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",300, -300, 300);\r
612737bb 109 // fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, 2000, 3000);//6000, 7000);\r
110 fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, -1000, 1000);//6000, 7000);\r
b5e0299c 111 }\r
112\r
113 fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",400,-2000,2000); //or A plus or C \r
114 fResolution = new TH1F("fResolution","fResolution",400,-2000,2000);// or A minus or C spectrum\r
115 fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",400,-2000,2000);// or A spectrum\r
116 fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",400,-2000,2000);// or C spectrum\r
117\r
118 \r
119 fTzeroObject = new TObjArray(0);\r
120 fTzeroObject->SetOwner(kTRUE);\r
121 \r
122 for (Int_t i=0; i<24; i++)\r
123 fTzeroObject->AddAtAndExpand(fTimeDiff[i],i);\r
124\r
125 for (Int_t i=0; i<24; i++)\r
126 fTzeroObject->AddAtAndExpand(fCFD[i],i+24); //24 - 48\r
127\r
128 fTzeroObject->AddAtAndExpand(fTzeroORAplusORC, 48);\r
129 fTzeroObject->AddAtAndExpand(fResolution, 49);\r
130 fTzeroObject->AddAtAndExpand(fTzeroORA, 50);\r
131 fTzeroObject->AddAtAndExpand(fTzeroORC, 51);\r
132\r
133 PostData(1, fTzeroObject);\r
134 // Called once\r
135}\r
136\r
137//________________________________________________________________________\r
138void AliT0CalibOffsetChannelsTask::UserExec(Option_t *) \r
139{\r
140 // Main loop\r
141 // Called for each event\r
142\r
143 // Post output data.\r
144 fESD = dynamic_cast<AliESDEvent*>(InputEvent());\r
145 if (!fESD) {\r
146 printf("ERROR: fESD not available\n");\r
147 return;\r
148 }\r
149\r
150 fRunNumber = fESD->GetRunNumber() ; \r
151\r
152 const Double32_t* time = fESD->GetT0time();\r
153 for (Int_t i=0; i<12; i++) {\r
612737bb 154 if( time[i] != 0 ){\r
155 printf(" %i time %f \n", i, time[i] );\r
156 fCFD[i]->Fill( time[i]);\r
157 if( time[0] != 0 ) \r
b5e0299c 158 fTimeDiff[i]->Fill( time[i]-time[0]);\r
159 }\r
160 }\r
161 for (Int_t i=12; i<24; i++) {\r
612737bb 162 if( time[i] != 0) {\r
b5e0299c 163 fCFD[i]->Fill( time[i]);\r
612737bb 164 if( time[12] != 0 ) \r
b5e0299c 165 fTimeDiff[i]->Fill( time[i]-time[12]);\r
166 }\r
167 }\r
168 const Double32_t* mean = fESD->GetT0TOF();\r
612737bb 169 Double32_t meanTOF = mean[0] ;\r
170 Double32_t orA = mean[1] ;\r
171 Double32_t orC = mean[2];\r
b5e0299c 172 \r
173 if(orA<9999) fTzeroORA->Fill(orA);\r
174 if(orC<9999) fTzeroORC->Fill(orC);\r
175 if(orA<9999 && orC<9999) fResolution->Fill((orA-orC)/2.);\r
176 if(orA<9999 && orC<9999) fTzeroORAplusORC->Fill(meanTOF); \r
177\r
178 // printf("%f %f %f\n",orA,orC,meanTOF);\r
179 PostData(1, fTzeroObject);\r
180} \r
181 //________________________________________________________________________\r
182void AliT0CalibOffsetChannelsTask::Terminate(Option_t *) \r
183{\r
184 \r
185 // Called once at the end of the query\r
186}\r
187 \r