X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0Calibrator.cxx;h=6cae77ac84c4ecef523a6346a108396c26049f19;hb=288f1d48a9d5c949e4e9e9000ffbcd2dcb7247f5;hp=90bcad8545975338840147b9046c662a5cd4d697;hpb=e8ed1cd0e039f34182b981628315be3dad7db43a;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0Calibrator.cxx b/T0/AliT0Calibrator.cxx index 90bcad85459..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. * * * @@ -31,27 +32,50 @@ #include "AliT0Calibrator.h" #include #include -//#include "iostream.h" +#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; // } @@ -89,26 +113,30 @@ Int_t AliT0Calibrator::WalkCorrection(Int_t ipmt, Int_t qt, Int_t time, TString { //slewing correcion and equalizing channels - Float_t walk=0; - Float_t maxValue=0; - Int_t timeEq=0, timeWalk=0; - TGraph *fu1=(TGraph*) fWalk.At(ipmt); - if(fu1){ - walk=fu1->Eval(Float_t(qt)); - TH1F*hr=fu1->GetHistogram(); - maxValue=hr->GetMaximum(50); + Int_t walk=0; + + Int_t timeEq=0, timeWalk=0; + // 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((maxValue-walk)/fChannelWidth) ; - timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]); + 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((maxValue-walk)) ; - if (ipmt<12) timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[0]); - if (ipmt>11) timeEq= timeWalk - (fTimeDelayCFD[ipmt]-fTimeDelayCFD[12]); - } - AliDebug(10,Form(" ipmt %i time before %i timeWalk %i , qt %i timeEq %i \n ", + 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; }