]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFSDigitizer.cxx
Cal Objects for DC06
[u/mrichter/AliRoot.git] / TOF / AliTOFSDigitizer.cxx
index ce555cd0e2dd04a1fd4ad097cf7b1adad3eaa0a9..8fe8f30686a641c1d3534c2602f1345d7acfd93e 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;
+
 }
 
 //____________________________________________________________________________ 
@@ -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)/AliTOFGeometry::TdcBinWidth()); // 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)
@@ -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;