these TTask are posted to the apropriate folders //YSAlice/tasks/(S)Digitizer and...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSDigitizer.cxx
index 7e5091298fde6e1bcab9a8252c131dde6d36ee93..b0ca76bc7f195ee587510326dd01c269f7f0ca93 100644 (file)
 // another set of SDigits with different parameters. Two versions
 // can be distunguished using titles of the branches.
 // User case:
-// root [0] AliPHOSSDigitizer * s = new AliPHOSSDigitizer("galice.root")
-// Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
-// root [1] s->ExecuteTask()
+//  root [0] AliPHOSSDigitizer * s = new AliPHOSSDigitizer("galice.root")
+//  Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
+//  root [1] s->ExecuteTask()
 //             // Makes SDigitis for all events stored in galice.root
-// root [2] s->SetPedestalParameter(0.001)
+//  root [2] s->SetPedestalParameter(0.001)
 //             // One can change parameters of digitization
-// root [3] s->SetSDigitsBranch("Redestal 0.001")
+// root [3] s->SetSDigitsBranch("Pedestal 0.001")
 //             // and write them into the new branch
-// root [4] s->ExeciteTask("deb all tim")
+// root [4] s->ExecuteTask("deb all tim")
 //             // available parameters:
 //             deb - print # of produced SDigitis
 //             deb all  - print # and list of produced SDigits
@@ -70,12 +70,12 @@ ClassImp(AliPHOSSDigitizer)
   AliPHOSSDigitizer::AliPHOSSDigitizer():TTask("AliPHOSSDigitizer","") 
 {
   // ctor
-  fA = 0;
-  fB = 10000000. ;
+  fA             = 0;
+  fB             = 10000000.;
   fPrimThreshold = 0.01 ;
-  fNevents = 0 ;     
-  fSDigits = 0 ;
-  fHits = 0 ;
+  fNevents       = 0 ;      
+  fSDigits       = 0 ;
+  fHits          = 0 ;
   fIsInitialized = kFALSE ;
 
 }
@@ -84,31 +84,15 @@ ClassImp(AliPHOSSDigitizer)
 AliPHOSSDigitizer::AliPHOSSDigitizer(const char* headerFile, const char *sDigitsTitle):TTask("AliPHOSSDigitizer","")
 {
   // ctor
-  fA = 0;
-  fB = 10000000.;
+  fA             = 0;
+  fB             = 10000000.;
   fPrimThreshold = 0.01 ;
-  fNevents = 0 ;      
-  fSDigitsTitle = sDigitsTitle ;
-  fHeadersFile = headerFile ;
-  fSDigits = new TClonesArray("AliPHOSDigit",1000);
-  fHits    = new TClonesArray("AliPHOSHit",1000);
+  fNevents       = 0 ;      
+  fSDigitsTitle  = sDigitsTitle ;
+  fHeadersFile   = headerFile ;
+  fIsInitialized = kFALSE ;
 
-  TFile * file = (TFile*) gROOT->GetFile(fHeadersFile.Data() ) ;
-  
-  //File was not opened yet
-  if(file == 0){
-    if(fHeadersFile.Contains("rfio"))
-      file =   TFile::Open(fHeadersFile,"update") ;
-    else
-      file = new TFile(fHeadersFile.Data(),"update") ;
-    gAlice = (AliRun *) file->Get("gAlice") ;
-  }
-  
-  //add Task to //root/Tasks folder
-  TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ; 
-  roottasks->Add(this) ; 
-  
-  fIsInitialized = kTRUE ;
+  Init();
 }
 
 //____________________________________________________________________________ 
@@ -121,8 +105,12 @@ AliPHOSSDigitizer::~AliPHOSSDigitizer()
     delete fHits ;
 }
 //____________________________________________________________________________ 
-void AliPHOSSDigitizer::Init(){
-  //Initialization can not be done in the default constructor
+void AliPHOSSDigitizer::Init()
+{
+  // Initialization: open root-file, allocate arrays for hits and sdigits,
+  // attach task SDigitizer to the list of PHOS tasks
+  // 
+  // Initialization can not be done in the default constructor
 
   if(!fIsInitialized){
 
@@ -133,23 +121,29 @@ void AliPHOSSDigitizer::Init(){
     
     //if file was not opened yet, read gAlice
     if(file == 0){
-      file = new TFile(fHeadersFile.Data(),"update") ;
+      if(fHeadersFile.Contains("rfio"))
+       file =  TFile::Open(fHeadersFile,"update") ;
+      else
+       file = new TFile(fHeadersFile.Data(),"update") ;
       gAlice = (AliRun *) file->Get("gAlice") ;
     }
     
     fHits    = new TClonesArray("AliPHOSHit",1000);
     fSDigits = new TClonesArray("AliPHOSDigit",1000);
     
-    // add Task to //root/Tasks folder
-    TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ; 
-    roottasks->Add(this) ; 
+    //add Task to //YSAlice/tasks/(S)Diditizer/PHOS
+    TFolder * alice  = (TFolder*)gROOT->GetListOfBrowsables()->FindObject("YSAlice") ; 
+    TTask * aliceSD  = (TTask*)alice->FindObject("tasks/(S)Digitizer") ; 
+    TTask * phosSD   = (TTask*)aliceSD->GetListOfTasks()->FindObject("PHOS") ;
+    phosSD->Add(this) ; 
     
     fIsInitialized = kTRUE ;
   }
 }
 //____________________________________________________________________________
-void AliPHOSSDigitizer::Exec(Option_t *option) { 
-  //Collects all hits in the same active volume into digit
+void AliPHOSSDigitizer::Exec(Option_t *option) 
+{ 
+  // Collects all hits in the same active volume into digit
   
   if(!fIsInitialized)
     Init() ;
@@ -312,14 +306,17 @@ void AliPHOSSDigitizer::Exec(Option_t *option) {
   
 }
 //__________________________________________________________________
-void AliPHOSSDigitizer::SetSDigitsBranch(const char * title ){
-  //Seting title to branch SDigits 
+void AliPHOSSDigitizer::SetSDigitsBranch(const char * title )
+{
+  // Setting title to branch SDigits 
   if(!fSDigitsTitle.IsNull())
     cout << "AliPHOSSdigitizer: changing SDigits file from " <<fSDigitsTitle.Data() << " to " << title << endl ;
   fSDigitsTitle=title ;
 }
 //__________________________________________________________________
-void AliPHOSSDigitizer::Print(Option_t* option)const{
+void AliPHOSSDigitizer::Print(Option_t* option)const
+{
+  // Prints parameters of SDigitizer
   cout << "------------------- "<< GetName() << " -------------" << endl ;
   cout << "   Writing SDigitis to branch with title  " << fSDigitsTitle.Data() << endl ;
   cout << "   with digitization parameters  A = " << fA << endl ;
@@ -329,15 +326,20 @@ void AliPHOSSDigitizer::Print(Option_t* option)const{
   
 }
 //__________________________________________________________________
-Bool_t AliPHOSSDigitizer::operator==( AliPHOSSDigitizer const &sd )const{
+Bool_t AliPHOSSDigitizer::operator==( AliPHOSSDigitizer const &sd )const
+{
+  // Equal operator.
+  // SDititizers are equal if their pedestal, slope and threshold are equal
+
   if( (fA==sd.fA)&&(fB==sd.fB)&&(fPrimThreshold==sd.fPrimThreshold))
     return kTRUE ;
   else
     return kFALSE ;
 }
 //__________________________________________________________________
-void AliPHOSSDigitizer::PrintSDigits(Option_t * option){
-  //Prints list of digits produced at the current pass of AliPHOSDigitizer
+void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
+{
+  // Prints list of digits produced in the current pass of AliPHOSDigitizer
   
   cout << "AliPHOSSDigitizer: " << endl ;
   cout << "       Number of entries in SDigits list  " << fSDigits->GetEntriesFast() << endl ;