Update of simulation
authormbroz <Michal.Broz@cern.ch>
Tue, 27 Jan 2015 14:18:13 +0000 (15:18 +0100)
committermbroz <Michal.Broz@cern.ch>
Tue, 27 Jan 2015 14:18:13 +0000 (15:18 +0100)
AD/ADbase/AliADCalibData.cxx
AD/ADbase/AliADConst.h
AD/ADsim/AliAD.cxx
AD/ADsim/AliAD.h
AD/ADsim/AliADDigitizer.cxx
AD/ADsim/AliADTriggerSimulator.cxx
AD/ADsim/AliADv1.cxx

index 76802b8..98e901b 100644 (file)
@@ -51,7 +51,7 @@ AliADCalibData::AliADCalibData():
   // default constructor
   
     for(int t=0; t<16; t++) {
-        fMeanHV[t]      = 100.0;
+        fMeanHV[t]      = 1600.0;
         fWidthHV[t]     = 0.0; 
        fTimeOffset[t]  = 0.0;
         fTimeGain[t]    = 1.0;
@@ -59,8 +59,8 @@ AliADCalibData::AliADCalibData():
        fDiscriThr[t]  = 2.5;
     }
     for(int t=0; t<32; t++) {
-        fPedestal[t]    = 0.0;     
-        fSigma[t]       = 100.0;        
+        fPedestal[t]    = 3.0;     
+        fSigma[t]       = 1.0;        
         fADCmean[t]     = 0.0;      
         fADCsigma[t]    = 0.0;
     }
index 3622d3b..65d7b5f 100644 (file)
@@ -4,10 +4,9 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
 
 const Float_t kIntTimeRes = 0.39; // intrinsic time resolution of the scintillator
-const Float_t kV0CDelayCables = 8.1; // delay cables on the C side (in ns)
-const Float_t kV0Offset = -1338.6; // general V0 offset between the TDCs and the trigger
+const Float_t kADOffset = -1338.6; // general V0 offset between the TDCs and the trigger
 const Int_t   kNClocks = 21; // Number of ADC clocks that are read out
-const Float_t kChargePerADC = 1e-19; // Charge per ADC
+const Float_t kChargePerADC = 0.6e-12; // Charge per ADC
 const Int_t   kMinTDCWidth = 13; // minimum signal width measured by TDC
 const Int_t   kMaxTDCWidth = 128; // maximum signal width measured by TDC
 const Float_t kPMRespTime = 6.0; // PM response time (corresponds to 1.9 ns rise time)
index 02e3516..6b9138d 100644 (file)
@@ -341,6 +341,35 @@ AliDigitizer* AliAD::CreateDigitizer(AliDigitizationInput* digInput) const
    //
    return new AliADDigitizer(digInput);
 }
+//_____________________________________________________________________________
+void AliAD::Hits2Digits(){
+  //
+  // Converts hits to digits
+  //
+  // Creates the AD digitizer 
+  AliADDigitizer* dig = new AliADDigitizer(this,AliADDigitizer::kHits2Digits);
+
+  // Creates the digits
+  dig->Digitize("");
+
+  // deletes the digitizer
+  delete dig;
+}
+
+//_____________________________________________________________________________
+void AliAD::Hits2SDigits(){
+  //
+  // Converts hits to summable digits
+  //
+  // Creates the AD digitizer 
+  AliADDigitizer* dig = new AliADDigitizer(this,AliADDigitizer::kHits2SDigits);
+
+  // Creates the sdigits
+  dig->Digitize("");
+
+  // deletes the digitizer
+  delete dig;
+}
 
 //_____________________________________________________________________________
 
index 9c97fd6..e3b9cef 100644 (file)
@@ -30,7 +30,9 @@ public:
   AliDigitizer*  CreateDigitizer(AliDigitizationInput* digInput) const;
   virtual AliTriggerDetector* CreateTriggerDetector() const { return new AliADTrigger();}
   
-  virtual      void     Digits2Raw();
+  virtual    void   Hits2Digits();
+  virtual    void   Hits2SDigits();
+  virtual    void     Digits2Raw();
   virtual    Bool_t     Raw2SDigits(AliRawReader*);
   virtual    void      SetADATwoInstalled(Bool_t b){fSetADATwoInstalled = b;} // ecv
   virtual    void      SetADCTwoInstalled(Bool_t b){fSetADCTwoInstalled = b;} // ecv
index db8b8f7..aedc470 100644 (file)
@@ -204,12 +204,12 @@ Bool_t AliADDigitizer::Init()
                       l1Delay-
                       phase->GetMeanPhase()+
                       delays->GetBinContent(i+1)+
-                      kV0Offset);
+                      kADOffset);
     fClockOffset[i] = (((Float_t)fCalibData->GetRollOver(board)-
                        (Float_t)fCalibData->GetTriggerCountOffset(board))*25.0+
                       fCalibData->GetTimeOffset(i)-
                       l1Delay+
-                      kV0Offset);
+                      kADOffset);
 
     fTime[i] = new Float_t[fNBins[i]];
     memset(fTime[i],0,fNBins[i]*sizeof(Float_t));
@@ -310,8 +310,7 @@ void AliADDigitizer::DigitizeHits()
           }
           Float_t dt_scintillator = gRandom->Gaus(0,kIntTimeRes);
           Float_t t = dt_scintillator + hit->GetTof();
-          //if (pmt < 32) t += kV0CDelayCables;
-          t += fHptdcOffset[pmt];
+          //t += fHptdcOffset[pmt];
           Int_t nPhE;
           Float_t prob = fCalibData->GetLightYields(pmt)*kPhotoCathodeEfficiency; // Optical losses included!
           if (nPhot > 100)
@@ -321,12 +320,12 @@ void AliADDigitizer::DigitizeHits()
             nPhE = gRandom->Binomial(nPhot,prob);
           Float_t charge = TMath::Qe()*fPmGain[pmt]*fBinSize[pmt]/integral;
           
-          
           for (Int_t iPhE = 0; iPhE < nPhE; ++iPhE) {       
             Float_t tPhE = t + fSignalShape->GetRandom(0,fBinSize[pmt]*Float_t(fNBins[pmt]));
             Float_t gainVar = fSinglePhESpectrum->GetRandom(0,20)/meansPhE;
             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]));
+            
             for(Int_t iBin = firstBin; iBin <= lastBin; ++iBin) {
               Float_t tempT = fBinSize[pmt]*(0.5+iBin)-tPhE;
               fTime[pmt][iBin] += gainVar*charge*fPMResponse->Eval(tempT);
@@ -351,12 +350,10 @@ void AliADDigitizer::DigitizeSDigits()
   Float_t integral2 = fSignalShape->Integral(0,200); // function. Anyway the effect is small <10% on the 2.5 ADC thr
   for (Int_t ipmt = 0; ipmt < 16; ++ipmt) {
     Float_t thr = fCalibData->GetCalibDiscriThr(ipmt,kFALSE)*kChargePerADC*maximum*fBinSize[ipmt]/integral2;
-    //Float_t thr = 1e-25;
        
     Bool_t ltFound = kFALSE, ttFound = kFALSE;
     for (Int_t iBin = 0; iBin < fNBins[ipmt]; ++iBin) {
       Float_t t = fBinSize[ipmt]*Float_t(iBin);
-      
       if (fTime[ipmt][iBin] > thr) {
        if (!ltFound && (iBin < fNBinsLT[ipmt])) {
          ltFound = kTRUE;
@@ -371,7 +368,8 @@ void AliADDigitizer::DigitizeSDigits()
          }
        }
       }
-      Float_t tadc = t - fClockOffset[ipmt];
+      //Float_t tadc = t - fClockOffset[ipmt];
+      Float_t tadc = t;
       Int_t clock = kNClocks/2 - Int_t(tadc/25.0);
       if (clock >= 0 && clock < kNClocks)
        fAdc[ipmt][clock] += fTime[ipmt][iBin]/kChargePerADC;
index 6832db8..2d94b1f 100644 (file)
@@ -202,7 +202,7 @@ void AliADTriggerSimulator::LoadClockOffset()
     fClockOffset[board] = (((Float_t)calibdata->GetRollOver(board)-
                            (Float_t)calibdata->GetTriggerCountOffset(board))*25.0-
                           l1Delay+
-                          kV0Offset);
+                          kADOffset);
     AliDebug(1,Form("Board %d Offset %f",board,fClockOffset[board]));
   }
 }
index 5541e7f..a899226 100644 (file)
@@ -297,7 +297,7 @@ void AliADv1::CreateAD()
   Ri += 0.63*tga;
   Ro  = Ri + d/ca;
   shVSR0->DefineSection(5,        14.0 ,      Ri, Ro);
-  printf("  Ro: %8.2f\n", Ro);
+  //printf("  Ro: %8.2f\n", Ro);
   // Make holes 
   new TGeoBBox("shHoleBody"    , 0.15, 0.60, 0.3);
   new TGeoTube("shHoleEnd", 0.  , 0.15, 0.3);
@@ -322,7 +322,7 @@ void AliADv1::CreateAD()
    (new TGeoRotation(Form("rSec%d",i), 30. * i, 0. , 0.))->RegisterYourself();
    strSh+=Form("+ shVSRsec:rSec%d",i);
   }
-  printf("%s\n", strSh.Data());
+  //printf("%s\n", strSh.Data());
   TGeoCompositeShape * shVSR = new TGeoCompositeShape("shVSR", strSh.Data());
   // Now assembly the sector to form VSR RF transition tube !
   TGeoVolume * voVSR = new TGeoVolume("voVSR", shVSR, kMedAlu);
@@ -339,7 +339,7 @@ void AliADv1::CreateAD()
   // Double_t Delta = TMath::Sqrt( L*L + 4.*(H-d)*H );
   Double_t R = TMath::Sqrt((H-d)*(H-d) + L*L);
   alpha = TMath::ASin(d/R) + TMath::ASin((H-d)/R);
-  printf("alpha: %8.2f \n", alpha * TMath::RadToDeg());
+  //printf("alpha: %8.2f \n", alpha * TMath::RadToDeg());
   sa = TMath::Sin(alpha);
   ca = TMath::Cos(alpha);
   x = d*sa;
@@ -451,7 +451,7 @@ void AliADv1::CreateAD()
   Double_t aRi[nsec] = {5.0, 5.0  , 5.685,  5.685,  5.0  ,  5.0};
   for (Int_t i=0; i<nsec; i++) {
    z=az[i]; Ri = aRi[i]; Ro = 5.7;
-   printf("  i: %2d  z: %8.2f  Ri: %8.2f  Ro: %8.2f\n", i, z, Ri, Ro );
+   //printf("  i: %2d  z: %8.2f  Ri: %8.2f  Ro: %8.2f\n", i, z, Ri, Ro );
    shVBUcent ->DefineSection( i, z, Ri, Ro);
   }
 
@@ -466,7 +466,7 @@ void AliADv1::CreateAD()
   TGeoPcon * shVBUrotFlg  = new TGeoPcon("shVBUrotFlg" , 0., 360., nsec2);
   for (Int_t i=0; i<nsec2; i++) {
    z=az2[i]; Ri = aRi2[i]; Ro = 6.02;
-   printf("  i: %2d  z: %8.2f  Ri: %8.2f  Ro: %8.2f\n", i, z, Ri, Ro );
+   //printf("  i: %2d  z: %8.2f  Ri: %8.2f  Ro: %8.2f\n", i, z, Ri, Ro );
    shVBUrotFlg ->DefineSection( i, z, Ri, Ro);
   }
   TGeoVolume * voVBUrotFlg = new TGeoVolume("voVBUrotFlg", shVBUrotFlg, kMedAlu);
@@ -1040,8 +1040,8 @@ void AliADv1::StepManager()
    
    static Bool_t fOnlyOnce = kTRUE;
    if (fOnlyOnce) {
-     printf("  gMC->VolId(\"ADApad\" ) = %3d\n", idADA);
-     printf("  gMC->VolId(\"ADCpad\" ) = %3d\n", idADC);
+     //printf("  gMC->VolId(\"ADApad\" ) = %3d\n", idADA);
+     //printf("  gMC->VolId(\"ADCpad\" ) = %3d\n", idADC);
      // printf("  gMC->VolId(\"ADCpadH\") = %3d\n", idADCh);
      fOnlyOnce = kFALSE;
    }
@@ -1077,7 +1077,7 @@ void AliADv1::StepManager()
    // Set detector type: ADA or ADC
    Int_t ADlayer = (current_volid == idADC ) ? 0 : 2;
 
-   printf("CurVolID: %d | sect: %2d | detc: %2d\n", current_volid, sect, detc); 
+   //printf("CurVolID: %d | sect: %2d | detc: %2d\n", current_volid, sect, detc); 
 
    sect--;          //     sector within layer [0-3]
    detc--;          //     detector copy       [0-1]
@@ -1089,7 +1089,7 @@ void AliADv1::StepManager()
    // ADC 1  =   4- 7
    // ADA 2  =   8-11
    // ADA 3  =  12-15
-   printf("\n ADsector: %2d | ADlayer: %2d | sect: %2d | x: %8.2f | y: %8.2f | z: %8.2f\n", ADsector, ADlayer, sect, x[0], x[1], x[2]); // Debug ECV
+   //printf("\n ADsector: %2d | ADlayer: %2d | sect: %2d | x: %8.2f | y: %8.2f | z: %8.2f\n", ADsector, ADlayer, sect, x[0], x[1], x[2]); // Debug ECV
    
    Double_t lightYield_ad;
    Double_t photoCathodeEfficiency;