X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0Calibrator.cxx;h=6cae77ac84c4ecef523a6346a108396c26049f19;hb=288f1d48a9d5c949e4e9e9000ffbcd2dcb7247f5;hp=e30f6bf1feeb13c02248eb31d2a89667fe5aa92e;hpb=94249139ca40b04fc04b99901f75f8c445311390;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0Calibrator.cxx b/T0/AliT0Calibrator.cxx index e30f6bf1fee..6cae77ac84c 100644 --- a/T0/AliT0Calibrator.cxx +++ b/T0/AliT0Calibrator.cxx @@ -1,3 +1,4 @@ + /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * @@ -29,30 +30,52 @@ #include "AliLog.h" #include "AliT0Parameters.h" #include "AliT0Calibrator.h" -//#include #include #include +#include +#include ClassImp(AliT0Calibrator) //____________________________________________________________________ AliT0Calibrator::AliT0Calibrator():TNamed(), - fChannelWidth(0), - fWalk(0) + fChannelWidth(0), + fWalk(0) + { //constructor - AliT0Parameters* param = AliT0Parameters::Instance(); - param->Init(); + AliT0Parameters* param = AliT0Parameters::Instance(); + param->Init(); fChannelWidth = param->GetChannelWidth() ; - + Double_t *grY ; //= new grY[2500] ; + // Double_t *grX ; + Int_t index[25000]; + Bool_t down=true; for (Int_t i=0; i<24; i++){ + fMaxValue[i]=0; fTimeDelayCFD[i] = Int_t (param->GetTimeDelayCFD(i)); + TGraph* fu = param ->GetWalk(i); - fWalk.AddAtAndExpand(fu,i); - + // TGraph* fu = param ->GetAmpLEDRec(i); + fWalk.AddAtAndExpand(fu,i); + + if(fu) { + Int_t np=fu->GetN(); + if(np>0) { + grY = fu->GetY(); + // grX[i] = fu->GetX(); + TMath::Sort(np, grY, index,down); + fMaxValue[i]=Int_t(grY[index[0]]); + + } + } + } + + // delete [] grY; + // delete [] grX; // } @@ -86,20 +109,34 @@ AliT0Calibrator &AliT0Calibrator::operator=(const AliT0Calibrator &r) //____________________________________________________________________ -Int_t AliT0Calibrator::WalkCorrection(Int_t ipmt, Int_t qt, Int_t time) +Int_t AliT0Calibrator::WalkCorrection(Int_t ipmt, Int_t qt, Int_t time, TString option) { //slewing correcion and equalizing channels + Int_t walk=0; + Int_t timeEq=0, timeWalk=0; - TGraph *fu1=(TGraph*) fWalk.At(ipmt); - Float_t walk=fu1->Eval(Float_t(qt)); - TH1F*hr=fu1->GetHistogram(); - Float_t maxValue=hr->GetMaximum(50); - timeWalk = time + Int_t((maxValue-walk)/fChannelWidth) ; - - timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]); - AliDebug(10,Form(" time before %i timeWalk %i , qt %i timeEq %i \n ", - time,timeWalk, qt, timeEq )); + // TGraph* fu1 = param ->GetWalk(ipmt); + // TGraph* fu1 = param ->GetAmpLEDRec(ipmt); + TGraph *fu1=(TGraph*) fWalk.At(ipmt); + if(fu1 && fu1->GetN()>0) { + walk=Int_t(fu1->Eval(Double_t(qt))); + } + if (option == "pdc") { + timeWalk = time + Int_t(fMaxValue[ipmt]-walk) ; + // timeEq= timeWalk - fTimeDelayCFD[ipmt]; + timeEq= timeWalk - fTimeDelayCFD[ipmt]; //for the same as cosmic + AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , qt %i timeEq %i \n ", + ipmt, time,timeWalk, qt, timeEq )); + } + if (option == "cosmic") { + timeWalk = time + Int_t((fMaxValue[ipmt]-walk)) ; + if(walk <1 ) timeWalk = time ; + timeEq= timeWalk - fTimeDelayCFD[ipmt]; + AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , qt %i timeEq %i \n ", + ipmt, time,timeWalk, qt, timeEq )); + } + return timeEq; }