- if(strstr(option,"all")){// print all digits
-
- //loop over digits
- AliTOFdigit * digit;
- cout << "Digit # " << " Time of flight(ps) " <<
- " ADC(pC)" << " Sector #" << " Plate #" <<
- " Strip #" << " Pad # (x) " << " Pad # (z) " << endl;
- Int_t index ;
- for (index = 0 ; index < fDigits->GetEntries() ; index++) {
- digit = (AliTOFdigit * ) fDigits->At(index) ;
-
- // set the width of the output with the setw(int width) manipulator
-
- cout << setw(7) << index << " "
- << setw(13) << digit->GetTdc() << " "
- << setw(13) << digit->GetAdc() << " "
- << setw(6) << digit->GetSector() << " "
- << setw(6) << digit->GetPlate() << " "
- << setw(6) << digit->GetStrip() << " "
- << setw(7) << digit->GetPadx() << " "
- << setw(7) << digit->GetPadz() << " " << endl;
-
- } // end loop on digits
-
- } // close if "all" option selected
+ //check whether we actually ask for miscalibration
+
+ for (Int_t j = 0; j<6; j++){
+ par[j]=(Double_t)calChannelOffline->GetSlewPar(j);
+ if(par[j]!=0)misCalibPars=kTRUE;
+ }
+ AliDebug(2,Form(" Calib Pars = %f (0-th parameter for time slewing + time delay), %f, %f, %f, %f, %f ",par[0],par[1],par[2],par[3],par[4],par[5]));
+
+ // Now generate Realistic ToT distribution from TestBeam Data.
+ // Tot is in ns, assuming a Matching Window of 10 ns.
+
+ Float_t simToT = 0;
+ Float_t trix = 0;
+ Float_t triy = 0;
+ Double_t timeCorr;
+ Double_t tToT;
+ while (simToT <= triy){
+ trix = gRandom->Rndm(i);
+ triy = gRandom->Rndm(i);
+ trix = (maxToT-minToT)*trix + minToT;
+ triy = maxToTDistr*triy;
+ Int_t binx=hToT->FindBin(trix);
+ simToT=hToT->GetBinContent(binx);
+ }
+ // the generated ToT (ns)
+ tToT= (Double_t) trix; // to apply slewing we start from ns..
+ // transform TOF signal in ns
+ AliDebug(2,Form(" The Initial Time (counts): %i: ",dig->GetTdc()));
+ AliDebug(2,Form(" Time before miscalibration (ps) %e: ",dig->GetTdc()*(Double_t)AliTOFGeometry::TdcBinWidth()));
+ // add slewing effect
+ timeCorr=par[0] + tToT*(par[1] +tToT*(par[2] +tToT*(par[3] +tToT*(par[4] +tToT*par[5]))));
+ AliDebug(2,Form(" The Time slewing + delay (ns): %f: ",timeCorr));
+ // add global time shift
+ //convert to ps
+ timeCorr*=1E3;
+ Double_t timeMis = (Double_t)(dig->GetTdc())*(Double_t)AliTOFGeometry::TdcBinWidth();
+ timeMis = timeMis+timeCorr;
+ AliDebug(2,Form(" The Miscalibrated time (ps): %e: ",timeMis));
+
+ // now update the digit info
+
+ Int_t tdcCorr= (Int_t)(timeMis/AliTOFGeometry::TdcBinWidth());
+ AliDebug(2,Form(" Final Time (counts): %i: ",tdcCorr));
+ // Setting Decalibrated Time signal (TDC counts)
+ dig->SetTdc(tdcCorr);
+ // Setting realistic ToT signal (TDC counts)
+ tToT*=1E3; //back to ps
+ Int_t tot=(Int_t)(tToT/AliTOFGeometry::ToTBinWidth());//(factor 1E3 as input ToT is in ns)
+ dig->SetToT(tot);
+ AliDebug(2,Form(" Final Time and ToT (counts): %i: , %i:",dig->GetTdc(),dig->GetToT()));
+ if(tdcCorr<0){
+ AliWarning (Form(" The bad Slewed Time(TDC counts)= %i ", tdcCorr));
+ AliWarning(Form(" The bad ToT (TDC counts)= %i ", tot));
+ }
+ }
+ else{
+ // For Data with no Miscalibration, set ToT signal == Adc
+ dig->SetToT((Int_t)(dig->GetAdc()/AliTOFGeometry::ToTBinWidth())); //remove the factor 10^3 just to have a reasonable ToT range for raw data simulation even in the case of non-realistic ToT distribution (n.b. fAdc is practically an arbitrary quantity, and ToT has no impact on the TOF reco for non-miscalibrated digits)
+ }
+ }
+
+ if(!isToTSimulated){
+ AliDebug(1,"Standard Production, no miscalibrated digits");
+ }else{
+ if(!misCalibPars){
+ AliDebug(1,"Standard Production, no miscalibrated digits");
+ }
+ else {
+ AliDebug(1,"Simulating miscalibrated digits");
+ }
+ }
+ return;