]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - AD/ADsim/AliADDigitizer.cxx
Changes for Root6 (Mikolaj)
[u/mrichter/AliRoot.git] / AD / ADsim / AliADDigitizer.cxx
index 0fbde40ca71322203ab5dbcb7dd674d5369a38c1..9e2ee691005d9218ce9a2bb181a0bc17f6df9b94 100644 (file)
@@ -53,6 +53,7 @@
 #include "AliADdigit.h"
 #include "AliADDigitizer.h"
 #include "AliADSDigit.h"
+#include "AliADTriggerSimulator.h"
 
 ClassImp(AliADDigitizer)
 
@@ -150,15 +151,14 @@ Bool_t AliADDigitizer::Init()
 
   // check if the digitizer was already initialized
   if (fSignalShape) return kTRUE;
-
   fSignalShape = new TF1("ADSignalShape",this,&AliADDigitizer::SignalShape,0,200,6,"AliADDigitizer","SignalShape");
+  fPMResponse = new TF1("ADPMResponse",this,&AliADDigitizer::PMResponse,-kPMRespTime,2.*kPMRespTime,0,"AliADDigitizer","PMResponse");
+  fSinglePhESpectrum = new TF1("ADSinglePhESpectrum",this,&AliADDigitizer::SinglePhESpectrum,0,20,0,"AliADDigitizer","SinglePhESpectrum");
   //  fSignalShape->SetParameters(0,1.57345e1,-4.25603e-1,2.9,6.40982,3.69339e-01);
   //  fSignalShape->SetParameters(1.34330e+00,1.13007e+02,-4.95705e-01,
   //                         3.68911e+00,1.01040e+00, 3.94675e-01);
   fSignalShape->SetParameters(-1.07335e+00,2.16002e+01,-1.26133e-01,
                              1.41619e+00,5.50334e-01,3.86111e-01);
-  fPMResponse = new TF1("ADPMResponse",this,&AliADDigitizer::PMResponse,-kPMRespTime,2.*kPMRespTime,0,"AliADDigitizer","PMResponse");
-  fSinglePhESpectrum = new TF1("ADSinglePhESpectrum",this,&AliADDigitizer::SinglePhESpectrum,0,20,0,"AliADDigitizer","SinglePhESpectrum");
   
   // Now get the CTP L0->L1 delay
   AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
@@ -198,22 +198,26 @@ Bool_t AliADDigitizer::Init()
     fNBinsLT[i] = TMath::Nint(((Float_t)(fCalibData->GetMatchWindow(board)+1)*25.0)/
                              fCalibData->GetTimeResolution(board));
     fBinSize[i] = fCalibData->GetTimeResolution(board);
-
-    fHptdcOffset[i] =  delays->GetBinContent(i+1);
+    
+    fHptdcOffset[i] = (((Float_t)fCalibData->GetRollOver(board)-
+                       (Float_t)fCalibData->GetTriggerCountOffset(board))*25.0
+                      //+fCalibData->GetTimeOffset(i)
+                      +delays->GetBinContent(16-i) - 250);
+                      //-l1Delay-
+                      //-phase->GetMeanPhase()
+                      //+kADOffset);
                       
     fClockOffset[i] = (((Float_t)fCalibData->GetRollOver(board)-
-                       (Float_t)fCalibData->GetTriggerCountOffset(board))*25.0+
-                      fCalibData->GetTimeOffset(i)-
-                      l1Delay+
-                      kADOffset);
+                       (Float_t)fCalibData->GetTriggerCountOffset(board))*25.0
+                      +fCalibData->GetTimeOffset(i) - 250);
+                      //-l1Delay
+                      //+kADOffset);
 
     fTime[i] = new Float_t[fNBins[i]];
     memset(fTime[i],0,fNBins[i]*sizeof(Float_t));
-    
-   // AliWarning(Form("PMT %d,PM gain %f, fNBins %d, TimeBinSize %f,",i, fPmGain[i], fNBins[i],fBinSize[i]));
-    
+      
   }
-
+  //std::cout<<"AD: "<<" fNBins = "<<fNBins[0]<<" fNBinsLT = "<<fNBinsLT[0]<<" fHptdcOffset = "<<fHptdcOffset[0]<<" fClockOffset = "<<fClockOffset[0]<<std::endl;
   return kTRUE;
 
 }
@@ -306,7 +310,7 @@ void AliADDigitizer::DigitizeHits()
           }
           Float_t dt_scintillator = gRandom->Gaus(0,kIntTimeRes);
           Float_t t = dt_scintillator + hit->GetTof();
-          //t += fHptdcOffset[pmt];
+          t += fHptdcOffset[pmt];
           
           Float_t charge = nPhot*fPmGain[pmt]*fBinSize[pmt]/integral;
             
@@ -314,6 +318,8 @@ void AliADDigitizer::DigitizeHits()
             
             Int_t firstBin = TMath::Max(0,(Int_t)((tPhE-kPMRespTime)/fBinSize[pmt]));
             Int_t lastBin = TMath::Min(fNBins[pmt]-1,(Int_t)((tPhE+2.*kPMRespTime)/fBinSize[pmt]));
+            //std::cout<<"Bins: "<<firstBin*fBinSize[pmt]<<" - "<<lastBin*fBinSize[pmt]<<std::endl;
+            //std::cout<<"Bins: "<<firstBin<<" - "<<lastBin<<std::endl;
             
             for(Int_t iBin = firstBin; iBin <= lastBin; ++iBin) {
               Float_t tempT = fBinSize[pmt]*(0.5+iBin)-tPhE;
@@ -356,8 +362,7 @@ void AliADDigitizer::DigitizeSDigits()
          }
        }
       }
-      //Float_t tadc = t - fClockOffset[ipmt];
-      Float_t tadc = t;
+      Float_t tadc = t - fClockOffset[ipmt];
       Int_t clock = kNClocks/2 - Int_t(tadc/25.0);
       if (clock >= 0 && clock < kNClocks)
        fAdc[ipmt][clock] += fTime[ipmt][iBin]/kChargePerADC;
@@ -382,7 +387,10 @@ void AliADDigitizer::DigitizeSDigits()
       fAdc[j][iClock]  += gRandom->Gaus(fAdcPedestal[j][integrator], fAdcSigma[j][integrator]);
     }
   }
-       
+  //Fill BB and BG flags in trigger simulator
+  AliADTriggerSimulator * triggerSimulator = new AliADTriggerSimulator();
+  triggerSimulator->FillFlags(fBBFlag,fBGFlag,fLeadingTime);
+       
 }
 
 //____________________________________________________________________________ 
@@ -473,7 +481,6 @@ void AliADDigitizer::WriteDigits(AliLoader *loader)
   TTree* treeD  = loader->TreeD();
   DigitsArray();
   treeD->Branch("ADDigit", &fDigits); 
-  //fAD->MakeBranchInTree(treeD,"AD",&fDigits,1000,"");
   
   Short_t *chargeADC = new Short_t[kNClocks];
   for (Int_t i=0; i<16; i++) {      
@@ -482,7 +489,7 @@ void AliADDigitizer::WriteDigits(AliLoader *loader)
       if (tempadc > 1023) tempadc = 1023;
       chargeADC[j] = tempadc;
     }
-    AddDigit(i, fLeadingTime[i], fTimeWidth[i], Bool_t((10+fEvenOrOdd)%2), chargeADC, fLabels[i]);
+    AddDigit(i, fLeadingTime[i], fTimeWidth[i], Bool_t((10+fEvenOrOdd)%2), chargeADC, fBBFlag[i], fBGFlag[i], fLabels[i]);
   }
   delete [] chargeADC;
 
@@ -520,14 +527,14 @@ void AliADDigitizer::WriteSDigits(AliLoader *loader)
 
 
 //____________________________________________________________________________
-void AliADDigitizer::AddDigit(Int_t pmnumber, Float_t time, Float_t width, Bool_t integrator, Short_t *chargeADC, Int_t *labels) 
+void AliADDigitizer::AddDigit(Int_t pmnumber, Float_t time, Float_t width, Bool_t integrator, Short_t *chargeADC, Bool_t bbFlag, Bool_t bgFlag, Int_t *labels) 
  { 
  
 // Adds Digit 
  
   TClonesArray &ldigits = *fDigits;  
         
-  new(ldigits[fNdigits++]) AliADdigit(pmnumber,time,width,integrator,chargeADC,labels);
+  new(ldigits[fNdigits++]) AliADdigit(pmnumber,time,width,integrator,chargeADC,bbFlag,bgFlag,labels);
         
 }
 //____________________________________________________________________________