AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask() \r
: AliAnalysisTaskSE(), fESD(0x0), fTzeroObject(0x0),\r
fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),\r
- fRunNumber(0)\r
+ fRunNumber(0),fRefPMTA(12), fRefPMTC(0)\r
{\r
// Constructor\r
\r
for( int ip=0; ip < 24; ip++){\r
fTimeDiff[ip] = 0;\r
fCFD[ip] = 0;\r
+ fCDBdelays[ip]= 0;\r
+ fCDBcfds[ip]= 0;\r
+ if (ip<4 ) fCDBT0s[ip]= 0;\r
}\r
\r
// Define input and output slots here\r
AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask(const char *name) \r
: AliAnalysisTaskSE(name), fESD(0), fTzeroObject(0),\r
fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0),\r
- fRunNumber(0)\r
+ fRunNumber(0),fRefPMTA(12), fRefPMTC(0)\r
{\r
// Constructor\r
\r
for( int ip=0; ip < 24; ip++){\r
fTimeDiff[ip] = 0;\r
fCFD[ip] = 0;\r
+ fCDBdelays[ip]= 0;\r
+ fCDBcfds[ip]= 0;\r
+ if (ip<4 ) fCDBT0s[ip]= 0;\r
+\r
}\r
\r
// Define input and output slots here\r
void AliT0CalibOffsetChannelsTask::UserCreateOutputObjects()\r
{\r
// Create histograms\r
+ Float_t low = fCDBcfds[fRefPMTC] - 500;\r
+ Float_t high = fCDBcfds[fRefPMTA] + 500;\r
+ printf(" AliT0CalibOffsetChannelsTask::UserCreateOutputObjects ::low %f high %f \n", low, high);\r
for (Int_t i=0; i<24; i++) {\r
- fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",300, -300, 300);\r
- fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, 2000, 3000);//6000, 7000);\r
- // fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, -1000, 1000);//6000, 7000);\r
+ fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",150, -300, 300);\r
+ fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",250,low, high);//6000, 7000);\r
+ // fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",250, -1000, 1000);//6000, 7000);\r
}\r
\r
- fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",400,-2000,2000); //or A plus or C \r
- fResolution = new TH1F("fResolution","fResolution",400,-2000,2000);// or A minus or C spectrum\r
- fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",400,-2000,2000);// or A spectrum\r
- fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",400,-2000,2000);// or C spectrum\r
+ fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",200,-4000,4000); //or A plus or C \r
+ fResolution = new TH1F("fResolution","fResolution",200,-1000,1000);// or A minus or C spectrum\r
+ fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",200,-4000,4000);// or A spectrum\r
+ fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",200,-4000,4000);// or C spectrum\r
\r
\r
fTzeroObject = new TObjArray(0);\r
// Called for each event\r
\r
// Post output data.\r
+\r
fESD = dynamic_cast<AliESDEvent*>(InputEvent());\r
if (!fESD) {\r
printf("ERROR: fESD not available\n");\r
return;\r
}\r
-\r
- fRunNumber = fESD->GetRunNumber() ; \r
-\r
+ Int_t trigT0 = fESD->GetT0Trig();\r
+ Bool_t eq = kTRUE;\r
+ fRunNumber = fESD->GetRunNumber() ;\r
+ if( fRunNumber<165747) eq = kFALSE;\r
+ \r
const Double32_t* time = fESD->GetT0time();\r
- for (Int_t i=0; i<12; i++) {\r
- if( time[i] != 0 ){\r
- fCFD[i]->Fill( time[i]);\r
- if( time[0] != 0 ) \r
- fTimeDiff[i]->Fill( time[i]-time[0]);\r
- }\r
- }\r
- for (Int_t i=12; i<24; i++) {\r
- if( time[i] != 0) {\r
- fCFD[i]->Fill( time[i]);\r
- if( time[12] != 0 ) \r
- fTimeDiff[i]->Fill( time[i]-time[12]);\r
+ const Double32_t* amp = fESD->GetT0amplitude();\r
+ \r
+ Double32_t diff;\r
+ for (Int_t i=0; i<24; i++) {\r
+ if( time[i] > 0 && amp[i]>0.1 ){\r
+ if (eq) {\r
+ fCFD[i]->Fill( time[i] );\r
+ if( time[fRefPMTC] > 0 && i<12) {\r
+ diff = time[i]-time[fRefPMTC];\r
+ fTimeDiff[i]->Fill( diff);\r
+ }\r
+ if( time[fRefPMTA] >0 && i>11) {\r
+ diff = time[i]-time[fRefPMTA] ;\r
+ fTimeDiff[i]->Fill( diff);\r
+ }\r
+ } //eq=1\r
+ else {\r
+ fCFD[i]->Fill( time[i] + fCDBdelays[i] );\r
+ if( time[fRefPMTC] > 0 && i<12) {\r
+ diff = time[i]-time[fRefPMTC] + fCDBdelays[i];\r
+ fTimeDiff[i]->Fill( diff);\r
+ } //C\r
+ if( time[fRefPMTA] >0 && i>11) {\r
+ diff = time[i]-time[fRefPMTA] + fCDBdelays[i];\r
+ fTimeDiff[i]->Fill( diff);\r
+ } //A\r
+ } //eq=0\r
}\r
+ \r
}\r
- const Double32_t* mean = fESD->GetT0TOF();\r
- Double32_t meanTOF = mean[0] ;\r
- Double32_t orA = mean[1] ;\r
- Double32_t orC = mean[2];\r
- \r
- if(orA<99999) fTzeroORA->Fill(orA);\r
- if(orC<99999) fTzeroORC->Fill(orC);\r
- if(orA<99999 && orC<99999) fResolution->Fill((orA-orC)/2.);\r
- if(orA<99999 && orC<99999) fTzeroORAplusORC->Fill(meanTOF); \r
-\r
- // printf("%f %f %f\n",orA,orC,meanTOF);\r
+ if (trigT0>5) {\r
+ const Double32_t* mean = fESD->GetT0TOF();\r
+ Double32_t meanTOF = mean[0] + fCDBT0s[0] ;\r
+ Double32_t orA = mean[1] + fCDBT0s[1] ;\r
+ Double32_t orC = mean[2] + fCDBT0s[2] ;\r
+ \r
+ if(orA<9999) fTzeroORA->Fill(orA);\r
+ if(orC<9999) fTzeroORC->Fill(orC);\r
+ if(orA<9999 && orC<9999) fResolution->Fill((orA-orC)/2.);\r
+ if(orA<9999 && orC<9999) fTzeroORAplusORC->Fill(meanTOF); \r
+ } //if TVDC on\r
+ // printf("%f %f %f\n",orA,orC,meanTOF);\r
PostData(1, fTzeroObject);\r
-} \r
+ } \r
//________________________________________________________________________\r
-void AliT0CalibOffsetChannelsTask::Terminate(Option_t *) \r
+ void AliT0CalibOffsetChannelsTask::Terminate(Option_t *) \r
{\r
\r
// Called once at the end of the query\r