#include <AliESDEvent.h>
#include <AliESDtrack.h>
#include <AliTender.h>
#include <AliT0TenderSupply.h>
#include <AliCDBManager.h>
#include <AliCDBEntry.h>
#include <AliT0CalibSeasonTimeShift.h>
#include <AliESDInputHandler.h>
ClassImp(AliT0TenderSupply)
AliT0TenderSupply::AliT0TenderSupply():
AliTenderSupply(),
fCorrectMeanTime(kFALSE),
fCorrectStartTimeOnAmplSatur(kFALSE),
fAmplitudeThreshold(100),
fPass4LHC11aCorrection(kFALSE)
{
for(int i=0; i<4; i++) fTimeOffset[i]=0;
}
AliT0TenderSupply::AliT0TenderSupply(const char *name, const AliTender *tender):
AliTenderSupply(name,tender),
fCorrectMeanTime(kFALSE),
fCorrectStartTimeOnAmplSatur(kFALSE),
fAmplitudeThreshold(100),
fPass4LHC11aCorrection(kFALSE)
{
for(int i=0; i<4; i++) fTimeOffset[i]=0;
}
AliT0TenderSupply::~AliT0TenderSupply(){
}
void AliT0TenderSupply::Init(){
Int_t run = fTender->GetRun();
if (run == 0) return;
Printf("----------- TZERO Tender ----------------");
fCorrectMeanTime = kFALSE;
for(int i=0; i<4; i++) fTimeOffset[i]=0;
if (fTender->GetRun()>=122195 && fTender->GetRun()<=130850){
Printf("Loading TZERO OCBD entries");
fCorrectMeanTime=kTRUE;
Printf("fCorrectMeanTime %i \n", fCorrectMeanTime);
AliCDBManager* ocdbMan = AliCDBManager::Instance();
ocdbMan->SetRun(fTender->GetRun());
AliCDBEntry *entry = ocdbMan->Get("T0/Calib/TimeAdjust/");
if(entry) {
AliT0CalibSeasonTimeShift *clb = (AliT0CalibSeasonTimeShift*) entry->GetObject();
Float_t *t0means = clb->GetT0Means();
for (Int_t i=0;i<4;i++) fTimeOffset[i] = t0means[i];
} else {
for (Int_t i=0;i<4;i++) fTimeOffset[i] = 0;
AliWarning("T0Tender no T0 entry found T0shift set to 0");
}
}
fCorrectStartTimeOnAmplSatur = kFALSE;
fAmplitudeThreshold = 100;
if(167693<= run && run<=170593){
fCorrectStartTimeOnAmplSatur = kTRUE;
fAmplitudeThreshold = 50;
}
}
void AliT0TenderSupply::ProcessEvent(){
AliESDEvent *event=fTender->GetEvent();
if (!event) return;
if(fTender->RunChanged()) Init();
if(fTender->RunChanged()){
Init();
if (fTender->GetRun()>=139699&& fTender->GetRun()<=146860){
AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler*> (fTender->GetESDhandler());
if (esdIH) {
TTree *tree= (TTree*)esdIH->GetTree();
TFile *file= (TFile*)tree->GetCurrentFile();
if (file){
TString fileName(file->GetName());
if (fileName.Contains("pass4") ) fPass4LHC11aCorrection=kTRUE;
}
}
}
}
if(fPass4LHC11aCorrection) {
const Double32_t* mean = event->GetT0TOF();
event->SetT0TOF(0, (mean[1]+mean[2])/2.);
}
if(fCorrectStartTimeOnAmplSatur){
const Double32_t* time = event->GetT0time();
const Double32_t* amplitude = event->GetT0amplitude();
Int_t idxOfFirstPmtA = -1;
Double32_t timeOrA = 99999;
for(int ipmt=12; ipmt<24; ipmt++){
if( amplitude[ipmt] < fAmplitudeThreshold){
if( time[ipmt] > -200 && time[ipmt]!=0 && time[ipmt] < timeOrA ){
timeOrA = time[ipmt];
idxOfFirstPmtA = ipmt;
}
}
}
if(idxOfFirstPmtA>-1){
const Double32_t* mean = event->GetT0TOF();
Double32_t timeOrC = mean[2];
Double32_t timeOrAplusOrC = (timeOrA+timeOrC)/2;
event->SetT0TOF(0, timeOrAplusOrC);
event->SetT0TOF(1, timeOrA);
}
}
if(fCorrectMeanTime) {
const Double32_t* mean = event->GetT0TOF();
for(int it0=0; it0<3; it0++){
if( mean[it0] < 10000 || (mean[it0]>6499000 && mean[it0]<6555000 ) )
event->SetT0TOF(it0, mean[it0] - fTimeOffset[it0]);
}
}
}
AliT0TenderSupply.cxx:100 AliT0TenderSupply.cxx:101 AliT0TenderSupply.cxx:102 AliT0TenderSupply.cxx:103 AliT0TenderSupply.cxx:104 AliT0TenderSupply.cxx:105 AliT0TenderSupply.cxx:106 AliT0TenderSupply.cxx:107 AliT0TenderSupply.cxx:108 AliT0TenderSupply.cxx:109 AliT0TenderSupply.cxx:110 AliT0TenderSupply.cxx:111 AliT0TenderSupply.cxx:112 AliT0TenderSupply.cxx:113 AliT0TenderSupply.cxx:114 AliT0TenderSupply.cxx:115 AliT0TenderSupply.cxx:116 AliT0TenderSupply.cxx:117 AliT0TenderSupply.cxx:118 AliT0TenderSupply.cxx:119 AliT0TenderSupply.cxx:120 AliT0TenderSupply.cxx:121 AliT0TenderSupply.cxx:122 AliT0TenderSupply.cxx:123 AliT0TenderSupply.cxx:124 AliT0TenderSupply.cxx:125 AliT0TenderSupply.cxx:126 AliT0TenderSupply.cxx:127 AliT0TenderSupply.cxx:128 AliT0TenderSupply.cxx:129 AliT0TenderSupply.cxx:130 AliT0TenderSupply.cxx:131 AliT0TenderSupply.cxx:132 AliT0TenderSupply.cxx:133 AliT0TenderSupply.cxx:134 AliT0TenderSupply.cxx:135 AliT0TenderSupply.cxx:136 AliT0TenderSupply.cxx:137 AliT0TenderSupply.cxx:138 AliT0TenderSupply.cxx:139 AliT0TenderSupply.cxx:140 AliT0TenderSupply.cxx:141 AliT0TenderSupply.cxx:142 AliT0TenderSupply.cxx:143 AliT0TenderSupply.cxx:144 AliT0TenderSupply.cxx:145 AliT0TenderSupply.cxx:146 AliT0TenderSupply.cxx:147 AliT0TenderSupply.cxx:148 AliT0TenderSupply.cxx:149 AliT0TenderSupply.cxx:150 AliT0TenderSupply.cxx:151 AliT0TenderSupply.cxx:152 AliT0TenderSupply.cxx:153 AliT0TenderSupply.cxx:154 AliT0TenderSupply.cxx:155 AliT0TenderSupply.cxx:156 AliT0TenderSupply.cxx:157 AliT0TenderSupply.cxx:158 AliT0TenderSupply.cxx:159 AliT0TenderSupply.cxx:160 AliT0TenderSupply.cxx:161 AliT0TenderSupply.cxx:162 AliT0TenderSupply.cxx:163 AliT0TenderSupply.cxx:164 AliT0TenderSupply.cxx:165 AliT0TenderSupply.cxx:166 AliT0TenderSupply.cxx:167 AliT0TenderSupply.cxx:168 AliT0TenderSupply.cxx:169 AliT0TenderSupply.cxx:170 AliT0TenderSupply.cxx:171 AliT0TenderSupply.cxx:172 AliT0TenderSupply.cxx:173 AliT0TenderSupply.cxx:174 AliT0TenderSupply.cxx:175 AliT0TenderSupply.cxx:176 AliT0TenderSupply.cxx:177 AliT0TenderSupply.cxx:178 AliT0TenderSupply.cxx:179 AliT0TenderSupply.cxx:180 AliT0TenderSupply.cxx:181 AliT0TenderSupply.cxx:182 AliT0TenderSupply.cxx:183 AliT0TenderSupply.cxx:184 AliT0TenderSupply.cxx:185 AliT0TenderSupply.cxx:186 AliT0TenderSupply.cxx:187 AliT0TenderSupply.cxx:188