X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0CalibOffsetChannelsTask.cxx;h=34313580f197e849fb05a1d22b4581cfd2512bef;hb=a3cd18eb392d45a0ff078d41aa790baa7b4d7f51;hp=99eefd25b80bd000348cb4af57065dd7441dd67a;hpb=bf83771bde6f30f11df2c972eb98f07983c90ecd;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0CalibOffsetChannelsTask.cxx b/T0/AliT0CalibOffsetChannelsTask.cxx index 99eefd25b80..34313580f19 100644 --- a/T0/AliT0CalibOffsetChannelsTask.cxx +++ b/T0/AliT0CalibOffsetChannelsTask.cxx @@ -27,13 +27,16 @@ ClassImp(AliT0CalibOffsetChannelsTask) AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask() : AliAnalysisTaskSE(), fESD(0x0), fTzeroObject(0x0), fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0), - fRunNumber(0) + fRunNumber(0),fRefPMTA(12), fRefPMTC(0) { // Constructor for( int ip=0; ip < 24; ip++){ fTimeDiff[ip] = 0; fCFD[ip] = 0; + fCDBdelays[ip]= 0; + fCDBcfds[ip]= 0; + if (ip<4 ) fCDBT0s[ip]= 0; } // Define input and output slots here @@ -47,13 +50,17 @@ AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask() AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask(const char *name) : AliAnalysisTaskSE(name), fESD(0), fTzeroObject(0), fTzeroORA(0x0), fTzeroORC(0x0), fResolution(0x0), fTzeroORAplusORC(0x0), - fRunNumber(0) + fRunNumber(0),fRefPMTA(12), fRefPMTC(0) { // Constructor for( int ip=0; ip < 24; ip++){ fTimeDiff[ip] = 0; fCFD[ip] = 0; + fCDBdelays[ip]= 0; + fCDBcfds[ip]= 0; + if (ip<4 ) fCDBT0s[ip]= 0; + } // Define input and output slots here @@ -106,16 +113,19 @@ AliT0CalibOffsetChannelsTask::~AliT0CalibOffsetChannelsTask() void AliT0CalibOffsetChannelsTask::UserCreateOutputObjects() { // Create histograms + Float_t low = fCDBcfds[fRefPMTC] - 500; + Float_t high = fCDBcfds[fRefPMTA] + 500; + printf(" AliT0CalibOffsetChannelsTask::UserCreateOutputObjects ::low %f high %f \n", low, high); for (Int_t i=0; i<24; i++) { - fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",300, -300, 300); - fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, 2000, 3000);//6000, 7000); - // fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",500, -1000, 1000);//6000, 7000); + fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",150, -300, 300); + fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",250,low, high);//6000, 7000); + // fCFD[i] = new TH1F(Form("CFD%d",i+1),"CFD",250, -1000, 1000);//6000, 7000); } - fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",400,-2000,2000); //or A plus or C - fResolution = new TH1F("fResolution","fResolution",400,-2000,2000);// or A minus or C spectrum - fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",400,-2000,2000);// or A spectrum - fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",400,-2000,2000);// or C spectrum + fTzeroORAplusORC = new TH1F("fTzeroORAplusORC","ORA+ORC /2",200,-4000,4000); //or A plus or C + fResolution = new TH1F("fResolution","fResolution",200,-1000,1000);// or A minus or C spectrum + fTzeroORA = new TH1F("fTzeroORA","fTzeroORA",200,-4000,4000);// or A spectrum + fTzeroORC = new TH1F("fTzeroORC","fTzeroORC",200,-4000,4000);// or C spectrum fTzeroObject = new TObjArray(0); @@ -143,44 +153,64 @@ void AliT0CalibOffsetChannelsTask::UserExec(Option_t *) // Called for each event // Post output data. + fESD = dynamic_cast(InputEvent()); if (!fESD) { printf("ERROR: fESD not available\n"); return; } - - fRunNumber = fESD->GetRunNumber() ; - + Int_t trigT0 = fESD->GetT0Trig(); + Bool_t eq = kTRUE; + fRunNumber = fESD->GetRunNumber() ; + if( fRunNumber<165747) eq = kFALSE; + const Double32_t* time = fESD->GetT0time(); - for (Int_t i=0; i<12; i++) { - if( time[i] != 0 ){ - fCFD[i]->Fill( time[i]); - if( time[0] != 0 ) - fTimeDiff[i]->Fill( time[i]-time[0]); - } - } - for (Int_t i=12; i<24; i++) { - if( time[i] != 0) { - fCFD[i]->Fill( time[i]); - if( time[12] != 0 ) - fTimeDiff[i]->Fill( time[i]-time[12]); + const Double32_t* amp = fESD->GetT0amplitude(); + + Double32_t diff; + for (Int_t i=0; i<24; i++) { + if( time[i] > 0 && amp[i]>0.1 ){ + if (eq) { + fCFD[i]->Fill( time[i] ); + if( time[fRefPMTC] > 0 && i<12) { + diff = time[i]-time[fRefPMTC]; + fTimeDiff[i]->Fill( diff); + } + if( time[fRefPMTA] >0 && i>11) { + diff = time[i]-time[fRefPMTA] ; + fTimeDiff[i]->Fill( diff); + } + } //eq=1 + else { + fCFD[i]->Fill( time[i] + fCDBdelays[i] ); + if( time[fRefPMTC] > 0 && i<12) { + diff = time[i]-time[fRefPMTC] + fCDBdelays[i]; + fTimeDiff[i]->Fill( diff); + } //C + if( time[fRefPMTA] >0 && i>11) { + diff = time[i]-time[fRefPMTA] + fCDBdelays[i]; + fTimeDiff[i]->Fill( diff); + } //A + } //eq=0 } + } - const Double32_t* mean = fESD->GetT0TOF(); - Double32_t meanTOF = mean[0] ; - Double32_t orA = mean[1] ; - Double32_t orC = mean[2]; - - if(orA<99999) fTzeroORA->Fill(orA); - if(orC<99999) fTzeroORC->Fill(orC); - if(orA<99999 && orC<99999) fResolution->Fill((orA-orC)/2.); - if(orA<99999 && orC<99999) fTzeroORAplusORC->Fill(meanTOF); - - // printf("%f %f %f\n",orA,orC,meanTOF); + if (trigT0>5) { + const Double32_t* mean = fESD->GetT0TOF(); + Double32_t meanTOF = mean[0] + fCDBT0s[0] ; + Double32_t orA = mean[1] + fCDBT0s[1] ; + Double32_t orC = mean[2] + fCDBT0s[2] ; + + if(orA<9999) fTzeroORA->Fill(orA); + if(orC<9999) fTzeroORC->Fill(orC); + if(orA<9999 && orC<9999) fResolution->Fill((orA-orC)/2.); + if(orA<9999 && orC<9999) fTzeroORAplusORC->Fill(meanTOF); + } //if TVDC on + // printf("%f %f %f\n",orA,orC,meanTOF); PostData(1, fTzeroObject); -} + } //________________________________________________________________________ -void AliT0CalibOffsetChannelsTask::Terminate(Option_t *) + void AliT0CalibOffsetChannelsTask::Terminate(Option_t *) { // Called once at the end of the query