]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOF.cxx
adding new sample component for RAW data analysis
[u/mrichter/AliRoot.git] / TOF / AliTOF.cxx
index 7dd7a0692db55500e050e025de26d9ddb078f107..5e63e0a72948efc44fdee23b35d1320e74c7389c 100644 (file)
 #include "AliLog.h"
 #include "AliMC.h"
 #include "AliRun.h"
+#include "AliDAQ.h"
+#include "AliRawReader.h"
 
-#include "AliTOFDDLRawData.h"
+//#include "AliTOFDDLRawData.h"
 #include "AliTOFDigitizer.h"
 #include "AliTOFdigit.h"
 #include "AliTOFhitT0.h"
@@ -62,6 +64,8 @@
 #include "AliTOFSDigitizer.h"
 #include "AliTOFSDigit.h"
 #include "AliTOF.h"
+#include "AliTOFrawData.h"
+#include "AliTOFRawStream.h"
 
 class AliTOFcluster;
 
@@ -71,9 +75,8 @@ extern TVirtualMC *gMC;
 
 extern AliRun *gAlice;
 
 ClassImp(AliTOF)
+
 //_____________________________________________________________________________
 AliTOF::AliTOF():
   fFGeom(0x0),
@@ -85,7 +88,8 @@ AliTOF::AliTOF():
   fIdSens(-1),
   fTZero(kFALSE),
   fTOFHoles(kTRUE),
-  fTOFGeometry(0x0)
+  fTOFGeometry(0x0),
+  fTOFRawWriter(AliTOFDDLRawData())
 {
   //
   // Default constructor
@@ -97,6 +101,7 @@ AliTOF::AliTOF():
   fDigits = 0;
   fIshunt   = 0;
   fName = "TOF";
+
 }
  
 //_____________________________________________________________________________
@@ -112,7 +117,8 @@ AliTOF::AliTOF(const char *name, const char *title, Option_t *option)
   fIdSens(-1),
   fTZero(kFALSE),
   fTOFHoles(kTRUE),
-  fTOFGeometry(0x0)
+  fTOFGeometry(0x0),
+  fTOFRawWriter(AliTOFDDLRawData())
 {
   //
   // AliTOF standard constructor
@@ -170,7 +176,7 @@ AliTOF::AliTOF(const char *name, const char *title, Option_t *option)
 }
 
 //____________________________________________________________________________
-void AliTOF::SetTOFSectors(Int_t *sectors)
+void AliTOF::SetTOFSectors(Int_t * const sectors)
 {
   // Setter for partial/full TOF configuration
 
@@ -187,40 +193,6 @@ void AliTOF::GetTOFSectors(Int_t *sectors) const
     sectors[isec]=fTOFSectors[isec];
   }
 }
-//_____________________________________________________________________________
-AliTOF::AliTOF(const AliTOF &source)
-  :
-  AliDetector(),
-  fFGeom(0x0),
-  fDTask(0x0),
-  fReTask(0x0),
-  fSDigits(0x0),
-  fNSDigits(0),
-  fReconParticles(0x0),
-  fIdSens(-1),
-  fTZero(kFALSE),
-  fTOFHoles(kTRUE),
-  fTOFGeometry(0x0)
-{
-  // copy constructor
-
-  this->fReconParticles=source.fReconParticles;
-  this->fSDigits=source.fSDigits;
-  this->fTOFGeometry=source.fTOFGeometry;
-
-}
-
-//_____________________________________________________________________________
-AliTOF& AliTOF::operator=(const AliTOF &source)
-{
-  // ass. op.
-
-  this->fReconParticles=source.fReconParticles;
-  this->fSDigits=source.fSDigits;
-  this->fTOFGeometry=source.fTOFGeometry;
-  return *this;
-
-}
 
 //_____________________________________________________________________________
 void AliTOF::CreateTOFFolders()
@@ -481,15 +453,6 @@ void AliTOF::DrawModule() const
   gMC->Gdopt("hide","off");
 }
 
-//_____________________________________________________________________________
-Int_t AliTOF::DistancetoPrimitive(Int_t , Int_t )
-{
-  //
-  // Returns distance from mouse pointer to detector, default version
-  //
-  return 9999;
-}
-
 //___________________________________________
 void AliTOF::ResetHits ()
 {
@@ -526,7 +489,7 @@ void AliTOF::Init()
   /*
   // Save the geometry
   TDirectory* saveDir = gDirectory;
-  gAlice->GetRunLoader()->CdGAFile();
+  AliRunLoader::Instance()->CdGAFile();
   fTOFGeometry->Write("TOFGeometry");
   saveDir->cd();
   */
@@ -615,10 +578,16 @@ void AliTOF::Hits2SDigits()
 //  AliInfo("Start...");
   
   AliRunLoader * rl = fLoader->GetRunLoader();
+  AliDebug(2,"Initialized runLoader");
   AliTOFSDigitizer sd((rl->GetFileName()).Data());
-  ToAliDebug(1, sd.Print(""));
+  AliDebug(2,"Initialized TOF sdigitizer");
+  //ToAliDebug(1, sd.Print(""));
+  //AliInfo("ToAliDebug");
 
-  sd.Exec("") ;
+  //sd.Exec("all") ;
+  sd.Exec("partial") ;
+
+  AliDebug(2,"I am sorting from AliTOF class");
 
 }
 
@@ -645,11 +614,13 @@ void AliTOF::Hits2SDigits(Int_t evNumber1, Int_t evNumber2)
 //___________________________________________________________________________
 AliDigitizer* AliTOF::CreateDigitizer(AliRunDigitizer* manager) const
 {
+  AliDebug(2,"I am creating the TOF digitizer");
   return new AliTOFDigitizer(manager);
 }
 
 //___________________________________________________________________________
-Bool_t AliTOF::CheckOverlap(Int_t* vol, Int_t* digit,Int_t Track)
+Bool_t AliTOF::CheckOverlap(const Int_t * const vol,
+                           Int_t* digit,Int_t Track)
 {
 //
 // Checks if 2 or more hits belong to the same pad.
@@ -720,26 +691,18 @@ void AliTOF::Digits2Raw()
     return;
   }
   
-  /*
-  fRunLoader->CdGAFile();
-  TFile *in=(TFile*)gFile;
-  in->cd();
-  AliTOFGeometry *geometry  = (AliTOFGeometry*)in->Get("TOFgeometry");
-  */
-  AliTOFDDLRawData rawWriter;
   //AliTOFDDLRawData rawWriter;
-  rawWriter.SetVerbose(0);
-  //rawWriter.SetFakeOrphaneProduction(kTRUE);
-  //rawWriter.SetPackedAcquisitionMode(kFALSE);
-  if (rawWriter.GetPackedAcquisitionMode()) {
-    if(rawWriter.GetMatchingWindow()>8192)
+  fTOFRawWriter.Clear();
+  fTOFRawWriter.SetVerbose(0);
+  if (fTOFRawWriter.GetPackedAcquisitionMode()) {
+    if(fTOFRawWriter.GetMatchingWindow()>8192)
       AliWarning(Form("You are running in packing mode and the matching window is %.2f ns, i.e. greater than 199.8848 ns",
-                     rawWriter.GetMatchingWindow()*AliTOFGeometry::TdcBinWidth()*1.e-03));
+                     fTOFRawWriter.GetMatchingWindow()*AliTOFGeometry::TdcBinWidth()*1.e-03));
   }
   
   AliDebug(1,"Formatting raw data for TOF");
   digits->GetEvent(0);
-  rawWriter.RawDataTOF(digits->GetBranch("TOF"));  
+  fTOFRawWriter.RawDataTOF(digits->GetBranch("TOF"));  
 
   fLoader->UnloadDigits();
   
@@ -764,3 +727,58 @@ void AliTOF::CreateSDigitsArray() {
 //
   fSDigits       = new TClonesArray("AliTOFSDigit",  1000);
 }
+//____________________________________________________________________________
+Bool_t AliTOF::Raw2SDigits(AliRawReader* rawReader)
+{
+  //
+  // Converts raw data to sdigits for TOF
+  //
+
+  TStopwatch stopwatch;
+  stopwatch.Start();
+
+  if(!GetLoader()->TreeS()) {MakeTree("S");  MakeBranch("S");}
+  //TClonesArray &aSDigits = *fSDigits;
+
+  AliTOFRawStream tofRawStream = AliTOFRawStream();
+  tofRawStream.Raw2SDigits(rawReader, fSDigits);
+
+  GetLoader()->TreeS()->Fill(); GetLoader()->WriteSDigits("OVERWRITE");//write out sdigits
+  Int_t nSDigits = fSDigits->GetEntries();
+
+  ResetSDigits();
+
+  AliDebug(1, Form("Got %d TOF sdigits", nSDigits));
+  AliDebug(1, Form("Execution time to read TOF raw data and fill TOF sdigit tree : R:%.2fs C:%.2fs",
+                  stopwatch.RealTime(),stopwatch.CpuTime()));
+
+  return kTRUE;
+
+}
+
+//____________________________________________________________________________
+void AliTOF::Raw2Digits(AliRawReader* rawReader)
+{
+  //
+  // Converts raw data to digits for TOF
+  //
+
+  TStopwatch stopwatch;
+  stopwatch.Start();
+
+  if(!GetLoader()->TreeD()) {MakeTree("D");  MakeBranch("D");}
+  //TClonesArray &aDigits = *fDigits;
+
+  AliTOFRawStream tofRawStream = AliTOFRawStream();
+  tofRawStream.Raw2Digits(rawReader, fDigits);
+
+  GetLoader()->TreeD()->Fill(); GetLoader()->WriteDigits("OVERWRITE");//write out digits
+  Int_t nDigits = fDigits->GetEntries();
+
+  ResetDigits();
+
+  AliDebug(1, Form("Got %d TOF digits", nDigits));
+  AliDebug(1, Form("Execution time to read TOF raw data and fill TOF digit tree : R:%.2fs C:%.2fs",
+                  stopwatch.RealTime(),stopwatch.CpuTime()));
+
+}