GetMedium replaced by CurrentMedium (I.Hrivnacova)
[u/mrichter/AliRoot.git] / TOF / AliTOFSDigitizer.cxx
index e002712..8fe8f30 100644 (file)
 #include "AliLog.h"
 #include "AliDetector.h"
 #include "AliLoader.h"
+#include "AliMC.h"
 #include "AliRun.h"
 #include "AliRunLoader.h"
+
 #include "AliTOF.h"
 #include "AliTOFGeometry.h"
 #include "AliTOFHitMap.h"
@@ -51,7 +53,6 @@
 #include "AliTOFSDigitizer.h"
 #include "AliTOFhit.h"
 #include "AliTOFhitT0.h"
-#include "AliMC.h"
 
 ClassImp(AliTOFSDigitizer)
 
@@ -68,6 +69,9 @@ ClassImp(AliTOFSDigitizer)
   ftail           = 0;
   fSelectedSector = -1;
   fSelectedPlate  = -1;
+
+  fTOFGeometry = new AliTOFGeometry();
+
 }
 
 //____________________________________________________________________________ 
@@ -97,6 +101,21 @@ AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_
       return;
     }
 
+  fRunLoader->CdGAFile();
+  TDirectory *savedir=gDirectory;
+  TFile *in=(TFile*)gFile;
+
+  if (!in->IsOpen()) {
+    AliWarning("Geometry file is not open default TOF geometry will be used");
+    fTOFGeometry = new AliTOFGeometry();
+  }
+  else {
+    in->cd();
+    fTOFGeometry = (AliTOFGeometry*)in->Get("TOFgeometry");
+  }
+
+  savedir->cd();
+
   if (fRunLoader->TreeE() == 0x0) fRunLoader->LoadHeader();
   
   if (evNumber1>=0) fEvent1 = evNumber1;
@@ -130,6 +149,9 @@ AliTOFSDigitizer::~AliTOFSDigitizer()
 {
   // dtor
   fTOFLoader->CleanSDigitizer();
+
+  delete fTOFGeometry;
+
 }
 
 //____________________________________________________________________________ 
@@ -149,8 +171,8 @@ void AliTOFSDigitizer::InitParameters()
   fEffBoundary    = 0.65;
   fEff2Boundary   = 0.90;
   fEff3Boundary   = 0.08;
-  fAddTRes        = 68. ; // \sqrt{2x20^2 + 15^2 + 2x10^2 + 30^2 + 50^2} (Pb-Pb)
-  //fAddTRes      = 48. ; // \sqrt{2x20^2 + 15^2 + 2x10^2 + 30^2 + 15^2} (p-p)
+  fAddTRes        = 68. ; // \sqrt{2x20^2 + 15^2 + 2x10^2 + 30^2 + 50^2} (p-p)
+  //fAddTRes      = 48. ; // \sqrt{2x20^2 + 15^2 + 2x10^2 + 30^2 + 15^2} (Pb-Pb)
   // 30^2+20^2+40^2+50^2+50^2+50^2 = 10400 ps^2 (very old value)
   fResCenter      = 35. ; //50. ; // OLD
   fResBoundary    = 70. ;
@@ -167,7 +189,7 @@ void AliTOFSDigitizer::InitParameters()
   fLogChargeSmearing=0.13;
   fTimeSmearing   =0.022;
   fAverageTimeFlag=0    ;
-  fTdcBin   = 50.;     // 1 TDC bin = 50 ps
+
   fAdcBin   = 0.25;    // 1 ADC bin = 0.25 pC (or 0.03 pC)
   fAdcMean  = 50.;     // ADC distribution mpv value for Landau (in bins)
                        // it corresponds to a mean value of ~100 bins
@@ -191,7 +213,6 @@ Double_t TimeWithTail(Double_t* x, Double_t* par)
   return f;
 }
 
-
 //____________________________________________________________________________
 void AliTOFSDigitizer::Exec(Option_t *verboseOption) { 
 
@@ -262,7 +283,7 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) {
     TClonesArray *tofHitArray = tof->Hits();
 
     // create hit map
-    AliTOFHitMap *hitMap = new AliTOFHitMap(tof->SDigits());
+    AliTOFHitMap *hitMap = new AliTOFHitMap(tof->SDigits(), fTOFGeometry);
 
     TBranch * tofHitsBranch = hitTree->GetBranch("TOF");
 
@@ -293,7 +314,7 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) {
 
        // fp: really sorry for this, it is a temporary trick to have
        // track length too
-       if(version!=6){
+       if(version!=6 && version!=7){
          AliTOFhit *tofHit = (AliTOFhit *) tofHitArray->UncheckedAt(hit);
          tracknum = tofHit->GetTrack();
          vol[0] = tofHit->GetSector();
@@ -359,7 +380,7 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) {
                  
                  if(timediff>=0.2) nlargeTofDiff++;
                  
-                 digit[0] = (Int_t) ((tofAfterSimul[indexOfPad]*1.e+03)/fTdcBin); // TDC bin number (each bin -> 50. ps)
+                 digit[0] = (Int_t) ((tofAfterSimul[indexOfPad]*1.e+03)/AliTOFGeometry::TdcBinWidth()); // TDC bin number (each bin -> 24.4 ps)
                  
                  Float_t landauFactor = gRandom->Landau(fAdcMean, fAdcRms); 
                  digit[1] = (Int_t) (qInduced[indexOfPad] * landauFactor); // ADC bins (each bin -> 0.25 (or 0.03) pC)
@@ -375,7 +396,7 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) {
                    AliTOFSDigit *sdig = static_cast<AliTOFSDigit*>(hitMap->GetHit(vol));
                    Int_t tdctime = (Int_t) digit[0];
                    Int_t adccharge = (Int_t) digit[1];
-                   sdig->Update(fTdcBin,tdctime,adccharge,tracknum);
+                   sdig->Update(AliTOFGeometry::TdcBinWidth(),tdctime,adccharge,tracknum);
                    ntotalupdatesinEv++;
                    ntotalupdates++;
                  } else {
@@ -793,7 +814,7 @@ void AliTOFSDigitizer::PrintParameters()const
   cout << " Time walk (ps) at the boundary of the pad       : "<< fTimeWalkBoundary<< endl;
   cout << " Slope (ps/K) for neighbouring pad               : "<< fTimeWalkSlope<<endl;
   cout << " Pulse Heigth Simulation Parameters " << endl;
-  cout << " Flag for delay due to the PulseHeightEffect: "<< fTimeDelayFlag <<endl;
+  cout << " Flag for delay due to the PulseHeightEffect  : "<< fTimeDelayFlag <<endl;
   cout << " Pulse Height Slope                           : "<< fPulseHeightSlope<<endl;
   cout << " Time Delay Slope                             : "<< fTimeDelaySlope<<endl;
   cout << " Minimum charge amount which could be induced : "<< fMinimumCharge<<endl;