X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0Digitizer.cxx;h=4fad34e484458884d29de80b1da7f6870e34ce25;hb=0333ede61e0e111c11cfe3d23963f76f90c1d8d9;hp=3fef86183e6732cc8dd0334bfd9ba91c10086782;hpb=955401ccae4fcef3774240e8cd75f69670a484de;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0Digitizer.cxx b/T0/AliT0Digitizer.cxx index 3fef86183e6..4fad34e4844 100644 --- a/T0/AliT0Digitizer.cxx +++ b/T0/AliT0Digitizer.cxx @@ -61,9 +61,8 @@ ClassImp(AliT0Digitizer) fADC0 (new TArrayI(24)), fSumMult(0), fAmpLED(0), + fAmpQTC(0), fParam(0) - - { // Default ctor - don't use it ; @@ -81,6 +80,7 @@ AliT0Digitizer::AliT0Digitizer(AliRunDigitizer* manager) fADC0 (new TArrayI(24)), fSumMult(0), fAmpLED(0), + fAmpQTC(0), fParam(0) { // ctor which should be used @@ -88,35 +88,48 @@ AliT0Digitizer::AliT0Digitizer(AliRunDigitizer* manager) AliDebug(1,"processed"); fParam = AliT0Parameters::Instance(); fParam->Init(); - Int_t index[25000]; - Bool_t down=true; for (Int_t i=0; i<24; i++){ - TGraph* gr = fParam ->GetAmpLEDRec(i); - Int_t np = gr->GetN(); - Double_t *x = gr->GetX(); - Double_t *y = gr->GetY(); - - Double_t *x1 = new Double_t[np]; - Double_t *y1 = new Double_t[np]; - for (Int_t ii=0; iiGetAmpLED(i); + if(gr) { + Int_t np = gr->GetN(); + Double_t *x = gr->GetX(); + Double_t *y = gr->GetY(); + + Double_t *x1 = new Double_t[np]; + Double_t *y1 = new Double_t[np]; + for (Int_t ii=0; iiGetWalk(i); - Int_t npw = grw->GetN(); - Double_t *yw = grw->GetY(); - TMath::Sort(npw, yw, index,down); - fMaxValue[i]=Int_t(yw[index[0]]); } + for (Int_t i=0; i<24; i++){ + TGraph* grq = fParam ->GetQTC(i); + if(grq){ + Int_t npq = grq->GetN(); + Double_t *xq = grq->GetX(); + Double_t *yq = grq->GetY(); + Double_t *x1q = new Double_t[npq]; + Double_t *y1q = new Double_t[npq]; + for (Int_t ii=1; iiT-> coefficients !!!! should be asked!!! Float_t timeDelayCFD[24]; @@ -179,9 +194,11 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) Float_t channelWidth = fParam->GetChannelWidth() ; Float_t delayVertex = fParam->GetTimeDelayTVD(); + zdetC = TMath::Abs(fParam->GetZPosition("T0/C/PMT1")); zdetA = TMath::Abs(fParam->GetZPosition("T0/A/PMT15")); + // printf(" !!!!!Z det A = %f C = % f",zdetA,zdetC); AliT0hit *startHit; TBranch *brHits=0; @@ -192,12 +209,12 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) continue; } - + Float_t slew = 0; Float_t besttimeC=99999.; Float_t besttimeA=99999.; - Int_t pmtBestC=9999; - Int_t pmtBestA=9999; - Int_t timeDiff=999, meanTime=0; + Int_t pmtBestC=99999; + Int_t pmtBestA=99999; + Int_t timeDiff=99999, meanTime=99999; Int_t sumMult =0; fSumMult=0; bestATDC = 99999; bestCTDC = 99999; @@ -208,12 +225,12 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) ftimeLED ->Reset(); for (Int_t i0=0; i0<24; i0++) { - time[i0]=besttime[i0]=timeGaus[i0]=99999; countE[i0]=0; + time[i0]=besttime[i0]=timeGaus[i0]=999999; countE[i0]=0; } AliRunLoader * inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(inputFile)); AliLoader * pInStartLoader = inRL->GetLoader("T0Loader"); if (!inRL->GetAliRun()) inRL->LoadgAlice(); - AliT0 *fT0 = (AliT0*)inRL ->GetAliRun()->GetDetector("T0"); + fT0 = (AliT0*)inRL ->GetAliRun()->GetDetector("T0"); //read Hits pInStartLoader->LoadHits("READ");//probably it is necessary to load them before @@ -223,8 +240,10 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) if (brHits) { fT0->SetHitsAddressBranch(brHits); }else{ - AliError("Branch T0 hit not found"); - exit(111); + AliWarning("Branch T0 hit not found for this event"); + // fT0->AddDigit(bestATDC,bestCTDC,meanTime,timeDiff,fSumMult, refpoint, + // ftimeCFD,fADC0,ftimeLED,fADC); + continue; } Int_t ntracks = (Int_t) th->GetEntries(); @@ -245,7 +264,6 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) Double_t e=startHit->Etot(); volume = startHit->Volume(); - // if(e>0 && RegisterPhotoE(numpmt,e)) { if(e>0 ) { countE[numpmt]++; besttime[numpmt] = startHit->Time(); @@ -289,31 +307,35 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) // phe -> mV 0.3; 1MIP ->500phe -> ln (amp (mV)) = 5; // max 200ns, HIJING mean 50000phe -> 15000mv -> ln = 15 (s zapasom) // channel 25ps - qt= 50.*al/ph2Mip; // 50mv/Mip amp in mV + qt= al/ph2Mip; // 50mv/Mip amp in mV + // before will we have calibration for high multiplicity + // if (qt > 115.) qt =115.; //must be fix!!! // fill TDC timeDelayCFD[i] = fParam->GetTimeDelayCFD(i); trCFD = Int_t (timeGaus[i]/channelWidth + timeDelayCFD[i]); + TGraph* gr = ((TGraph*)fAmpLED.At(i)); - sl = gr->Eval(qt); + if(gr) sl = gr->Eval(qt); - trLED = Int_t(( timeGaus[i] + 1000*sl )/channelWidth); - qtCh=Int_t (1000.*TMath::Log(qt) / channelWidth); + TGraph* gr1 = ((TGraph*)fAmpQTC.At(i)); + if(gr1) qtCh = gr1->Eval(qt); fADC0->AddAt(0,i); - fADC->AddAt(qtCh,i); - ftimeLED->AddAt(trLED,i); + if(qtCh) + fADC->AddAt(Int_t(qtCh),i); // sumMult += Int_t ((al*gain[i]/ph2Mip)*50) ; - sumMult += Int_t (qt/sumMultCoeff) ; + sumMult += Int_t (qtCh/sumMultCoeff) ; // put slewing - TGraph *fu=(TGraph*) fParam ->GetWalk(i) ; - Float_t slew=fu->Eval(Float_t(qtCh)); - + TGraph *fu=(TGraph*) fParam ->GetWalk(i); + if(fu) slew=fu->Eval(Float_t(qtCh)); + // trCFD=trCFD-Int_t(fMaxValue[i]-slew); - trCFD = trCFD-Int_t(fMaxValue[i]-slew) + 2000; //for the same channel as cosmic + trCFD = trCFD + Int_t(slew); //for the same channel as cosmic ftimeCFD->AddAt(Int_t (trCFD),i); - AliDebug(10,Form(" pmt %i : time in ns %f time in channels %i LEd %i ", i, timeGaus[i],trCFD, trLED )); - AliDebug(10,Form(" qt in mV %f qt in ns %f qt in channels %i ",qt, - TMath::Log(qt), qtCh)); + trLED = Int_t(trCFD + sl ); + ftimeLED->AddAt(trLED,i); + AliDebug(1,Form(" pmt %i : delay %f time in ns %f time in channels %i LEd %i ", i, timeDelayCFD[i], timeGaus[i],trCFD, trLED )); + AliDebug(1,Form(" qt in MIP %f led-cfd in %f qt in channels %f ",qt, sl, qtCh)); } } //pmt loop @@ -333,12 +355,11 @@ void AliT0Digitizer::Exec(Option_t* /*option*/) /channelWidth); meanTime=Int_t (((besttimeC+besttimeA)/2. )/channelWidth); } - AliDebug(10,Form(" time A& C %i %i time diff && mean time in channels %i %i",bestATDC,bestCTDC, timeDiff, meanTime)); if (sumMult > threshold){ fSumMult = Int_t (1000.* TMath::Log(Double_t(sumMult) / Double_t(sumMultCoeff)) /channelWidth); - AliDebug(10,Form("summult mv %i mult in chammens %i in ps %i ", + AliDebug(10,Form("summult mv %i mult in chammens %i in ps %f ", sumMult, fSumMult, fSumMult*channelWidth)); }