]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDigitizer.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / ITS / AliITSDigitizer.cxx
index 96759dbcdf97b825550fde763a3a9bbb3e94d27a..2b180269ef2992895234972ed6ebff7a88bd1f8a 100644 (file)
 #include "AliRunLoader.h"
 #include "AliLoader.h"
 #include "AliLog.h"
-#include "AliRunDigitizer.h"
+#include "AliDigitizationInput.h"
 #include "AliITSDigitizer.h"
 #include "AliITSgeom.h"
+#include "AliITSgeomTGeo.h"
 #include "AliITSsimulation.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:
@@ -51,16 +58,18 @@ AliITSDigitizer::AliITSDigitizer() : AliDigitizer(){
     //      none.
     // Return:
     //      A blank AliITSDigitizer class.
+  fModActive = new Bool_t[AliITSgeomTGeo::GetNModules()];
+  for(Int_t i=0;i<AliITSgeomTGeo::GetNModules();i++) fModActive[i] = kTRUE;
 
-    fITS      = 0;
-    fModActive   = 0;
-    fRoif     = -1;
-    fRoiifile = 0;
-    fInit     = kFALSE;
-    fFlagFirstEv =kTRUE;
 }
 //______________________________________________________________________
-AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
+AliITSDigitizer::AliITSDigitizer(AliDigitizationInput* digInp) : AliDigitizer(digInp),
+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:
@@ -69,29 +78,10 @@ AliITSDigitizer::AliITSDigitizer(AliRunDigitizer *mngr) : AliDigitizer(mngr){
     //      none.
     // Return:
     //      An AliItSDigitizer class.
-
-    fITS      = 0;
-    fModActive   = 0;
-    fRoif     = -1;
-    fRoiifile = 0;
-    fInit     = kFALSE;
-    fFlagFirstEv =kTRUE;
+  fModActive = new Bool_t[AliITSgeomTGeo::GetNModules()];
+  for(Int_t i=0;i<AliITSgeomTGeo::GetNModules();i++) fModActive[i] = kTRUE;
 }
 
-//______________________________________________________________________
-AliITSDigitizer::AliITSDigitizer(const AliITSDigitizer &/*rec*/):AliDigitizer(/*rec*/){
-    // Copy constructor. 
-
-  Error("Copy constructor","Copy constructor not allowed");
-  
-}
-//______________________________________________________________________
-AliITSDigitizer& AliITSDigitizer::operator=(const AliITSDigitizer& /*source*/){
-    // Assignment operator. This is a function which is not allowed to be
-    // done.
-    Error("operator=","Assignment operator not allowed\n");
-    return *this; 
-}
 
 //______________________________________________________________________
 AliITSDigitizer::~AliITSDigitizer(){
@@ -130,21 +120,17 @@ Bool_t AliITSDigitizer::Init(){
        fInit     = kFALSE;
        Warning("Init","ITS not found");
        return fInit;
-    } else if(fITS->GetITSgeom()){
-       //cout << "fRoif,fRoiifile="<<fRoif<<" "<<fRoiifile<<endl;
-       fModActive = new Bool_t[fITS->GetITSgeom()->GetIndexMax()];
-    } else{
+    } 
+    if(!fITS->GetITSgeom()){
        fRoiifile = 0;
        fInit     = kFALSE;
        Warning("Init","ITS geometry not found");
        return fInit;
     } // end if
-    // fModActive needs to be set to a default all kTRUE value
-    for(Int_t i=0;i<fITS->GetITSgeom()->GetIndexMax();i++) fModActive[i] = kTRUE;
     return fInit;
 }
 //______________________________________________________________________
-void AliITSDigitizer::Exec(Option_t* opt){
+void AliITSDigitizer::Digitize(Option_t* opt){
     // Main digitization function. 
     // Inputs:
     //      Option_t * opt   list of sub detector to digitize. =0 all.
@@ -153,14 +139,14 @@ void AliITSDigitizer::Exec(Option_t* opt){
     // Return:
     //      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 name[21] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
     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();
+    Int_t nfiles = GetDigInput()->GetNinputs();
+    Int_t event  = GetDigInput()->GetOutputEventNr();
     AliITSsimulation *sim      = 0;
     if(fFlagFirstEv){
       fITS->SetDefaults();    
@@ -172,7 +158,7 @@ void AliITSDigitizer::Exec(Option_t* opt){
        return;
     } // end if
 
-    sprintf(name,"%s",fITS->GetName());
+    snprintf(name,20,"%s",fITS->GetName());
 
     Int_t size   = fITS->GetITSgeom()->GetIndexMax();
     Int_t module,id,ifiles,mask;
@@ -195,10 +181,11 @@ void AliITSDigitizer::Exec(Option_t* opt){
     AliRunLoader *inRL = 0x0, *outRL = 0x0;
     AliLoader *ingime = 0x0, *outgime = 0x0;    
     
-    outRL = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());    
+    outRL = AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());    
     if ( outRL == 0x0)
      {
        Error("Exec","Can not get Output Run Loader");
+       delete [] fl;
        return;
      }
     outRL->GetEvent(event);
@@ -206,6 +193,7 @@ void AliITSDigitizer::Exec(Option_t* opt){
     if ( outgime == 0x0)
      {
        Error("Exec","Can not get Output ITS Loader");
+       delete [] fl;
        return;
      }
 
@@ -220,18 +208,18 @@ void AliITSDigitizer::Exec(Option_t* opt){
     else {
       AliDebug(1,"No Region of Interest selected. Digitizing everything");
     }
-    if(fModActive==0) fRoif = 0; // fModActive array must be define for RIO cuts.
+
 
     for(ifiles=0; ifiles<nfiles; ifiles++ )
      {
-       inRL =  AliRunLoader::GetRunLoader(fManager->GetInputFolderName(fl[ifiles]));
+       inRL =  AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(fl[ifiles]));
        ingime = inRL->GetLoader(loadname);
        if (ingime->TreeS() == 0x0) ingime->LoadSDigits();
      }
 
     for(module=0; module<size; module++ )
      {
-       if(fModActive && fRoif!=0) if(!fModActive[module]) continue;
+       if(fRoif!=0) if(!fModActive[module]) continue;
        id = fITS->GetITSgeom()->GetModuleType(module);
        if(!all && !det[id]) continue;
        sim      = (AliITSsimulation*)fITS->GetSimulationModel(id);
@@ -246,13 +234,13 @@ void AliITSDigitizer::Exec(Option_t* opt){
          {
            if(fRoif!=0) if(!fModActive[module]) continue;
             
-           inRL =  AliRunLoader::GetRunLoader(fManager->GetInputFolderName(fl[ifiles]));
+           inRL =  AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(fl[ifiles]));
            ingime = inRL->GetLoader(loadname);
            
            TTree *treeS = ingime->TreeS();
            fITS->SetTreeAddress();
            
-           if( !(treeS && fITS->GetSDigits()) ) continue; 
+           if( !treeS  ) continue; 
            TBranch *brchSDigits = treeS->GetBranch( name );
            if( brchSDigits ) 
             {
@@ -260,14 +248,15 @@ void AliITSDigitizer::Exec(Option_t* opt){
             } else {
                 Error( "Exec", "branch ITS not found in TreeS, input file %d ",
                        ifiles );
+               delete [] fl;
                return;
             } // end if brchSDigits
             sdig->Clear();
-            mask = GetManager()->GetMask(ifiles);
+            mask = GetDigInput()->GetMask(ifiles);
             // add summable digits to module
             brchSDigits->GetEvent( module );
             lmod = sim->AddSDigitsToModule(sdig,mask);
-            if(fRegionOfInterest && (ifiles==0))
+            if(GetRegionOfInterest() && (ifiles==0))
              {
                fModActive[module] = lmod;
              } // end if
@@ -280,13 +269,13 @@ void AliITSDigitizer::Exec(Option_t* opt){
         outgime->TreeD()->Fill();
        fITS->ResetDigits();
     } // end for module
-    
+    fITS->WriteFOSignals(); 
     outgime->TreeD()->AutoSave();
     outgime->WriteDigits("OVERWRITE");
     outgime->UnloadDigits();
     for(ifiles=0; ifiles<nfiles; ifiles++ )
      {
-       inRL =  AliRunLoader::GetRunLoader(fManager->GetInputFolderName(fl[ifiles]));
+       inRL =  AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(fl[ifiles]));
        ingime = inRL->GetLoader(loadname);
        ingime->UnloadSDigits();
      }
@@ -332,7 +321,6 @@ void AliITSDigitizer::SetByRegionOfInterest(TTree *ts){
 
     nm = fITS->GetITSgeom()->GetIndexMax();
     for(m=0;m<nm;m++){
-      //cout << " fModActive["<<m<<"]=";
       fModActive[m] = kFALSE; // Not active by default
       sdig->Clear();
       brchSDigits->GetEvent(m);