]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSSDigitizer.cxx
Coding conventions (F.Carminati)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSDigitizer.cxx
index a5c2d580abca9f4828be0c4816273863ef3d0957..23ea4a26971b40872be4b4097fa64921dd9a1280 100644 (file)
 
 
 // --- ROOT system ---
-#include "TFile.h"
-#include "TROOT.h"
 #include "TBenchmark.h"
+#include "TRandom.h"
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
-#include "AliRun.h"
+#include "AliPHOSGeometry.h" 
 #include "AliPHOSDigit.h"
 #include "AliPHOSGetter.h"
 #include "AliPHOSHit.h"
@@ -71,26 +70,32 @@ ClassImp(AliPHOSSDigitizer)
   AliPHOSSDigitizer::AliPHOSSDigitizer():TTask("","")
 {
   // ctor
-  InitParameters() ;
+  fFirstEvent = fLastEvent  = 0 ;  
   fDefaultInit = kTRUE ; 
 }
 
 //____________________________________________________________________________ 
-AliPHOSSDigitizer::AliPHOSSDigitizer(const char * alirunFileName, const char * eventFolderName):
-  TTask("PHOS"+AliConfig::fgkSDigitizerTaskName, alirunFileName),
+AliPHOSSDigitizer::AliPHOSSDigitizer(const char * alirunFileName, 
+                                    const char * eventFolderName):
+  TTask("PHOS"+AliConfig::Instance()->GetSDigitizerTaskName(), alirunFileName),
   fEventFolderName(eventFolderName)
 {
 
   // ctor
+  fFirstEvent = fLastEvent  = 0 ; // runs one event by defaut  
   InitParameters() ; 
   Init();
   fDefaultInit = kFALSE ; 
 }
 
 //____________________________________________________________________________ 
-AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd) {
+AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd)
+  : TTask(sd)
+{
   //cpy ctor 
 
+  fFirstEvent    = sd.fFirstEvent ; 
+  fLastEvent     = sd.fLastEvent ;
   fA             = sd.fA ;
   fB             = sd.fB ;
   fPrimThreshold = sd.fPrimThreshold ;
@@ -101,6 +106,13 @@ AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd) {
 }
 
 
+//____________________________________________________________________________ 
+AliPHOSSDigitizer::~AliPHOSSDigitizer() {
+  //dtor
+  AliPHOSGetter * gime =
+    AliPHOSGetter::Instance(GetTitle(),fEventFolderName.Data());  
+  gime->PhosLoader()->CleanSDigitizer();
+}
 //____________________________________________________________________________ 
 void AliPHOSSDigitizer::Init()
 {
@@ -138,7 +150,13 @@ void AliPHOSSDigitizer::InitParameters()
 //____________________________________________________________________________
 void AliPHOSSDigitizer::Exec(Option_t *option) 
 { 
-  // Collects all hits in the same active volume into digit
+  // Steering method to produce summable digits for events
+  // in the range from fFirstEvent to fLastEvent.
+  // This range is optionally set by SetEventRange().
+  // if fLastEvent=-1 (by default), then process events until the end.
+  //
+  // Summable digit is a sum of all hits in the same active
+  // volume into digit
   
   if (strstr(option, "print") ) {
     Print() ; 
@@ -148,7 +166,7 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
   if(strstr(option,"tim"))
     gBenchmark->Start("PHOSSDigitizer");
   
-  AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
+  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;
 
   //switch off reloading of this task while getting event
   if (!fInit) { // to prevent overwrite existing file
@@ -156,13 +174,15 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
     return ;
   }
 
-
-  Int_t nevents = gime->MaxEvent() ; 
+  if (fLastEvent == -1) 
+    fLastEvent = gime->MaxEvent() - 1 ;
+  else 
+    fLastEvent = TMath::Min(fFirstEvent, gime->MaxEvent()); // only ine event at the time 
+  Int_t nEvents   = fLastEvent - fFirstEvent + 1;
+  
   Int_t ievent ;
-  for(ievent = 0; ievent < nevents; ievent++){
-
+  for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
     gime->Event(ievent,"H") ;
-
     TTree * treeS = gime->TreeS(); 
     TClonesArray * hits = gime->Hits() ;
     TClonesArray * sdigits = gime->SDigits() ;
@@ -234,7 +254,7 @@ void AliPHOSSDigitizer::Exec(Option_t *option)
   if(strstr(option,"tim")){
     gBenchmark->Stop("PHOSSDigitizer");
     Info("Exec","   took %f seconds for SDigitizing  %f seconds per event",
-        gBenchmark->GetCpuTime("PHOSSDigitizer"), gBenchmark->GetCpuTime("PHOSSDigitizer")/nevents) ;
+        gBenchmark->GetCpuTime("PHOSSDigitizer"), gBenchmark->GetCpuTime("PHOSSDigitizer")/nEvents) ;
   }
 }
 
@@ -271,34 +291,26 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
 
   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
   const TClonesArray * sdigits = gime->SDigits() ;
-
-  TString message ; 
-  message  = "\nAliPHOSSDigitiser: event " ;
-  message += gAlice->GetEvNumber(); 
-  message += "\n      Number of entries in SDigits list " ;  
-  message += sdigits->GetEntriesFast() ; 
-  char * tempo = new char[8192]; 
   
+  Info( "\nPrintSDigits", "event # %d %d sdigits", gAlice->GetEvNumber(), sdigits->GetEntriesFast() ) ; 
+
   if(strstr(option,"all")||strstr(option,"EMC")){
     
     //loop over digits
     AliPHOSDigit * digit;
-    message += "\nEMC sdigits\n" ;
-    message += "\n   Id  Amplitude    Time          Index Nprim: Primaries list \n" ;    
+    printf("\nEMC sdigits\n") ; 
     Int_t maxEmc = gime->PHOSGeometry()->GetNModules()*gime->PHOSGeometry()->GetNCristalsInModule() ;
     Int_t index ;
     for (index = 0 ; (index < sdigits->GetEntriesFast()) && 
         ((dynamic_cast<AliPHOSDigit *> (sdigits->At(index)))->GetId() <= maxEmc) ; index++) {
       digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
-      if(digit->GetNprimary() == 0) 
-       continue;
-      sprintf(tempo, "\n%6d  %8d    %6.5e %4d      %2d :",
-             digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;  
-      message += tempo ; 
+      //  if(digit->GetNprimary() == 0) 
+      //       continue;
+      printf("%6d  %8d    %6.5e %4d      %2d :\n",
+             digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;  
       Int_t iprimary;
       for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
-       sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ; 
-       message += tempo ; 
+       printf("%d ",digit->GetPrimary(iprimary+1) ) ; 
       }  
     }    
   }
@@ -307,32 +319,27 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
     
     //loop over CPV digits
     AliPHOSDigit * digit;
-    
-    message += "CPV sdigits\n" ;
-    message += "\n   Id  Amplitude    Index Nprim: Primaries list \n" ;    
+    printf("\nCPV sdigits\n") ; 
     Int_t maxEmc = gime->PHOSGeometry()->GetNModules()*gime->PHOSGeometry()->GetNCristalsInModule() ;
     Int_t index ;
     for (index = 0 ; index < sdigits->GetEntriesFast(); index++) {
       digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
       if(digit->GetId() > maxEmc){
-       sprintf(tempo, "\n%6d  %8d    %4d      %2d :",
+       printf("\n%6d  %8d    %4d      %2d :",
                digit->GetId(), digit->GetAmp(), digit->GetIndexInList(), digit->GetNprimary()) ;  
-       message += tempo ; 
        Int_t iprimary;
        for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
-         sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ; 
-         message += tempo ; 
+         printf("%d ",digit->GetPrimary(iprimary+1) ) ; 
        }
       }    
     }
   }
-  delete []tempo ; 
-  Info("PrintSDigits", message.Data() ) ;
 }
 
 //____________________________________________________________________________ 
 void AliPHOSSDigitizer::Unload() const
 {
+  // Unloads the objects from the folder
   AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
   AliPHOSLoader * loader = gime->PhosLoader() ; 
   loader->UnloadHits() ;