]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDigitizer.cxx
Coverity fix.
[u/mrichter/AliRoot.git] / ITS / AliITSDigitizer.cxx
index c1fb2b47ca674c2b10149911f096d9fc9bbf4755..6eb20778061e38021d1fde04eceaeb07cdb398ef 100644 (file)
  **************************************************************************/
  
 /* $Id$ */
-
-//Piotr.Skowronski@cern.ch :
-//Corrections applied in order to compile (only) with new I/O and folder structure
-//To be implemented correctly by responsible
-//
-//  Class used to steer
-//  the digitization for ITS
-//
-//
+///////////////////////////////////////////////////////////////////////////
+//Piotr.Skowronski@cern.ch :                                             //
+//Corrections applied in order to compile (only)                         // 
+//   with new I/O and folder structure                                   //
+//To be implemented correctly by responsible                             //
+//                                                                       //
+//  Class used to steer                                                  //
+//  the digitization for ITS                                             //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
 
 #include <stdlib.h>
-#include <Riostream.h>
 #include <TClonesArray.h>
 #include <TTree.h>
 #include <TBranch.h>
 
-#include <AliRun.h>
-#include <AliRunLoader.h>
-#include <AliLoader.h>
-#include <AliRunDigitizer.h>
+#include "AliRun.h"
+#include "AliRunLoader.h"
+#include "AliLoader.h"
+#include "AliLog.h"
+#include "AliRunDigitizer.h"
 #include "AliITSDigitizer.h"
-#include "AliITSpList.h"
 #include "AliITSgeom.h"
 #include "AliITSsimulation.h"
-#include "AliITSDetType.h"
 
 ClassImp(AliITSDigitizer)
 
 //______________________________________________________________________
-AliITSDigitizer::AliITSDigitizer() : AliDigitizer(){
+AliITSDigitizer::AliITSDigitizer() : AliDigitizer(),
+fITS(0),
+fModActive(0),
+fInit(kFALSE),
+fRoif(-1),
+fRoiifile(0),
+fFlagFirstEv(kTRUE){
     // Default constructor. Assign fITS since it is never written out from
     // here. 
     // Inputs:
@@ -53,14 +58,15 @@ AliITSDigitizer::AliITSDigitizer() : AliDigitizer(){
     // Return:
     //      A blank AliITSDigitizer class.
 
-    fITS      = 0;
-    fModActive   = 0;
-    fRoif     = -1;
-    fRoiifile = 0;
-    fInit     = kFALSE;
 }
 //______________________________________________________________________
-AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
+AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr),
+fITS(0),
+fModActive(0),
+fInit(kFALSE),
+fRoif(-1),
+fRoiifile(0),
+fFlagFirstEv(kTRUE){
     // Standard constructor. Assign fITS since it is never written out from
     // here. 
     // Inputs:
@@ -70,12 +76,9 @@ AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
     // Return:
     //      An AliItSDigitizer class.
 
-    fITS      = 0;
-    fModActive   = 0;
-    fRoif     = -1;
-    fRoiifile = 0;
-    fInit     = kFALSE;
 }
+
+
 //______________________________________________________________________
 AliITSDigitizer::~AliITSDigitizer(){
     // Default destructor. 
@@ -85,7 +88,6 @@ AliITSDigitizer::~AliITSDigitizer(){
     //      none.
     // Return:
     //      none.
-
     fITS = 0; // don't delete fITS. Done else where.
     if(fModActive) delete[] fModActive;
 }
@@ -138,26 +140,26 @@ void AliITSDigitizer::Exec(Option_t* opt){
     //      none.
 
     char name[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-    char *all;
+    const char *all;
     const char *det[3] = {strstr(opt,"SPD"),strstr(opt,"SDD"),
                           strstr(opt,"SSD")};
     if( !det[0] && !det[1] && !det[2] ) all = "All";
     else all = 0;
+    Int_t nfiles = GetManager()->GetNinputs();
+    Int_t event  = GetManager()->GetOutputEventNr();
     AliITSsimulation *sim      = 0;
-    AliITSDetType    *iDetType = 0;
-    static Bool_t    setDef    = kTRUE;
-
+    if(fFlagFirstEv){
+      fITS->SetDefaults();    
+      fITS->SetDefaultSimulation();
+      fFlagFirstEv=kFALSE;
+    }
     if(!fInit){
-       Error("Exec","Init not succesfull, aborting.");
+       Error("Exec","Init not successful, aborting.");
        return;
     } // end if
 
-    if( setDef ) fITS->SetDefaultSimulation();
-    setDef = kFALSE;
     sprintf(name,"%s",fITS->GetName());
 
-    Int_t nfiles = GetManager()->GetNinputs();
-    Int_t event  = GetManager()->GetOutputEventNr();
     Int_t size   = fITS->GetITSgeom()->GetIndexMax();
     Int_t module,id,ifiles,mask;
     Bool_t lmod;
@@ -192,16 +194,19 @@ void AliITSDigitizer::Exec(Option_t* opt){
        Error("Exec","Can not get Output ITS Loader");
        return;
      }
+
     outgime->LoadDigits("update");
     if (outgime->TreeD() == 0x0) outgime->MakeTree("D");
     
     // Digitize
     fITS->MakeBranchInTreeD(outgime->TreeD());
-    if(fRoif!=0) Info("AliITSDigitizer","Region of Interest digitization selected");
-    else Info("AliITSDigitizer","No Region of Interest selected. Digitizing everything");
-    //cout <<"fModActive="<<fModActive<<" fRoif="<<fRoif;
+    if(fRoif!=0) {
+      AliDebug(1,"Region of Interest digitization selected");
+    }
+    else {
+      AliDebug(1,"No Region of Interest selected. Digitizing everything");
+    }
     if(fModActive==0) fRoif = 0; // fModActive array must be define for RIO cuts.
-    //cout <<" fRoif="<<fRoif<<endl;
 
     for(ifiles=0; ifiles<nfiles; ifiles++ )
      {
@@ -212,18 +217,15 @@ void AliITSDigitizer::Exec(Option_t* opt){
 
     for(module=0; module<size; module++ )
      {
-        if(fModActive && fRoif!=0) if(!fModActive[module]) continue;
-        id = fITS->GetITSgeom()->GetModuleType(module);
-        if(!all && !det[id]) continue;
-        iDetType = fITS->DetType( id );
-
-        sim      = (AliITSsimulation*)iDetType->GetSimulationModel();
-        if(!sim) {
+       if(fModActive && fRoif!=0) if(!fModActive[module]) continue;
+       id = fITS->GetITSgeom()->GetModuleType(module);
+       if(!all && !det[id]) continue;
+       sim      = (AliITSsimulation*)fITS->GetSimulationModel(id);
+       if(!sim) {
             Error( "Exec", "The simulation class was not instanciated!" );
             exit(1);
         } // end if !sim
-
-        // Fill the module with the sum of SDigits
+           // Fill the module with the sum of SDigits
         sim->InitSimulationModule(module, event);
        //cout << "Module=" << module;
         for(ifiles=0; ifiles<nfiles; ifiles++ )
@@ -236,7 +238,7 @@ void AliITSDigitizer::Exec(Option_t* opt){
            TTree *treeS = ingime->TreeS();
            fITS->SetTreeAddress();
            
-           if( !(treeS && fITS->GetSDigits()) ) continue; 
+           if( !treeS  ) continue; 
            TBranch *brchSDigits = treeS->GetBranch( name );
            if( brchSDigits ) 
             {
@@ -251,24 +253,23 @@ void AliITSDigitizer::Exec(Option_t* opt){
             // add summable digits to module
             brchSDigits->GetEvent( module );
             lmod = sim->AddSDigitsToModule(sdig,mask);
-            if(ifiles==0)
+            if(fRegionOfInterest && (ifiles==0))
              {
                fModActive[module] = lmod;
              } // end if
         } // end for ifiles
        //cout << " end ifiles loop" << endl;
         // Digitize current module sum(SDigits)->Digits
-        sim->FinishSDigitiseModule();
+       sim->FinishSDigitiseModule();
 
         // fills all branches - wasted disk space
         outgime->TreeD()->Fill();
-        fITS->ResetDigits();
+       fITS->ResetDigits();
     } // end for module
-
+    
     outgime->TreeD()->AutoSave();
     outgime->WriteDigits("OVERWRITE");
     outgime->UnloadDigits();
-    
     for(ifiles=0; ifiles<nfiles; ifiles++ )
      {
        inRL =  AliRunLoader::GetRunLoader(fManager->GetInputFolderName(fl[ifiles]));
@@ -280,6 +281,8 @@ void AliITSDigitizer::Exec(Option_t* opt){
     sdig->Clear();
     delete sdig;
     for(Int_t i=0;i<fITS->GetITSgeom()->GetIndexMax();i++) fModActive[i] = kTRUE;
+    
+
     return;
 }
 //______________________________________________________________________
@@ -329,7 +332,7 @@ void AliITSDigitizer::SetByRegionOfInterest(TTree *ts){
       //cout << fModActive[m];
       //cout << endl;
     } // end for m
-    Info("AliITSDigitizer","Digitization by Region of Interest selected");
+    AliDebug(1,"Digitization by Region of Interest selected");
     sdig->Clear();
     delete sdig;
     return;