]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOS.cxx
Coverity fix
[u/mrichter/AliRoot.git] / PHOS / AliPHOS.cxx
index 596e95e77edef22b0ab9f8c8fc4ca766a2a0009a..8c0e9e8fddc460ccdd7e0dbe4b28c7607744d97a 100644 (file)
@@ -81,6 +81,7 @@ class TFile;
 #include "AliPHOS.h"
 #include "AliPHOSLoader.h"
 #include "AliRun.h"
+#include "AliRawReader.h"
 #include "AliPHOSDigitizer.h"
 #include "AliPHOSSDigitizer.h"
 #include "AliPHOSDigit.h"
@@ -125,9 +126,9 @@ AliPHOS::~AliPHOS()
 }
 
 //____________________________________________________________________________
-AliDigitizer* AliPHOS::CreateDigitizer(AliRunDigitizer* manager) const
+AliDigitizer* AliPHOS::CreateDigitizer(AliDigitizationInput* digInput) const
 {
-  return new AliPHOSDigitizer(manager);
+  return new AliPHOSDigitizer(digInput);
 }
 
 //____________________________________________________________________________
@@ -379,42 +380,6 @@ void AliPHOS::CreateMaterials()
 //_____________________________________________________________________________
 void AliPHOS::Init()
 {
-  //
-  // Initialises cuts for PHOS
-  //
-  // --- Set decent energy thresholds for gamma and electron tracking
-  Int_t * idtmed = fIdtmed->GetArray() - 699 ; 
-
-  // Tracking threshold for photons and electrons in the scintillator crystal 
-  gMC->Gstpar(idtmed[699], "CUTGAM",0.5E-4) ; 
-  gMC->Gstpar(idtmed[699], "CUTELE",1.0E-4) ;
-  // --- Generate explicitly delta rays in the titan cover ---
-  gMC->Gstpar(idtmed[704], "LOSS",3.) ;
-  gMC->Gstpar(idtmed[704], "DRAY",1.) ;
-  // --- and in aluminium parts ---
-  gMC->Gstpar(idtmed[701], "LOSS",3.) ;
-  gMC->Gstpar(idtmed[701], "DRAY",1.) ;
-  // --- and in PIN diode
-  gMC->Gstpar(idtmed[705], "LOSS",3) ;
-  gMC->Gstpar(idtmed[705], "DRAY",1) ;
-  // --- and in the passive convertor
-  gMC->Gstpar(idtmed[712], "LOSS",3) ;
-  gMC->Gstpar(idtmed[712], "DRAY",1) ;
-  // Tracking threshold for photons and electrons in the gas ArC02 
-  gMC->Gstpar(idtmed[715], "CUTGAM",1.E-5) ; 
-  gMC->Gstpar(idtmed[715], "CUTELE",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "CUTNEU",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "CUTHAD",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "CUTMUO",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "BCUTE",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "BCUTM",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "DCUTE",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "DCUTM",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "PPCUTM",1.E-5) ;
-  gMC->Gstpar(idtmed[715], "LOSS",2.) ;
-  gMC->Gstpar(idtmed[715], "DRAY",0.) ;
-  gMC->Gstpar(idtmed[715], "STRA",2.) ;
 }
 
 //____________________________________________________________________________
@@ -426,7 +391,7 @@ void AliPHOS::Digits2Raw()
     AliError("Energy digitization should be OFF if use Digits2Raw") ;
   }
 
-  AliPHOSLoader * loader = dynamic_cast<AliPHOSLoader*>(fLoader) ; 
+  AliPHOSLoader * loader = static_cast<AliPHOSLoader*>(fLoader) ; 
 
   // get the digits
   loader->LoadDigits();
@@ -484,7 +449,7 @@ void AliPHOS::Digits2Raw()
 
   // loop over digits (assume ordered digits)
   for (Int_t iDigit = 0; iDigit < digits->GetEntries(); iDigit++) {
-    AliPHOSDigit* digit = dynamic_cast<AliPHOSDigit *>(digits->At(iDigit)) ;
+    AliPHOSDigit* digit = static_cast<AliPHOSDigit *>(digits->At(iDigit)) ;
 
     // Skip small energy below treshold
     if (digit->GetEnergy() < kThreshold) 
@@ -492,7 +457,7 @@ void AliPHOS::Digits2Raw()
 
     Int_t relId[4];
     geom->AbsToRelNumbering(digit->GetId(), relId);
-    Int_t module = relId[0];
+    Int_t module = 5-relId[0];
  
     // Begin FIXME 
     if (relId[1] != 0) 
@@ -518,8 +483,8 @@ void AliPHOS::Digits2Raw()
     
     
     // PHOS EMCA has 4 DDL per module. Splitting is based on the (row,column) numbers.
-    // PHOS internal convention: 1<module<5.
-    Int_t iDDL = 4 * (module - 1) + iRCU;
+    // here module already in PHOS online convention: 0<module<4 and inverse order.
+    Int_t iDDL = 4 * module  + iRCU;
 
     // new DDL
     if (iDDL != prevDDL) {
@@ -548,10 +513,9 @@ void AliPHOS::Digits2Raw()
     // calculate the time response function
     } else {
       Double_t energy = 0 ;
-      module = relId[0];
       if (digit->GetId() <= geom->GetNModules() * geom->GetNCristalsInModule()) {
        energy=digit->GetEnergy();
-       if(energy>eMax) {eMax=energy; modMax=module; colMax=col; rowMax=row;}
+       if(energy>eMax) {eMax=energy; modMax=relId[0]; colMax=col; rowMax=row;}
       }
       else {
        energy = 0; // CPV raw data format is now know yet
@@ -569,7 +533,9 @@ void AliPHOS::Digits2Raw()
                           pulse->GetRawFormatTimeBins(), adcValuesHigh, kAdcThreshold);
     }
   }
-  
+  delete [] adcValuesLow;
+  delete [] adcValuesHigh;
+
   // write real header and close last file
   for (Int_t iDDL=0; iDDL<maxDDL; iDDL++) {
     if (buffer[iDDL]) {
@@ -595,7 +561,7 @@ void AliPHOS::Hits2SDigits()
   AliPHOSSDigitizer phosDigitizer(fLoader->GetRunLoader()->GetFileName().Data()) ;
   phosDigitizer.SetEventRange(0, -1) ; // do all the events
  
-  phosDigitizer.ExecuteTask("all") ; 
+  phosDigitizer.Digitize("all") ; 
 }
 
 
@@ -614,7 +580,7 @@ void AliPHOS::SetTreeAddress()
   // Links Hits in the Tree to Hits array
   TBranch *branch;
   char branchname[20];
-  sprintf(branchname,"%s",GetName());
+  snprintf(branchname,20,"%s",GetName());
   // Branch address for hit tree
     TTree *treeH = fLoader->TreeH();
   if (treeH) {
@@ -632,7 +598,7 @@ void AliPHOS::SetTreeAddress()
 Bool_t AliPHOS::Raw2SDigits(AliRawReader* rawReader)    
 {       
                 
-  AliPHOSLoader * loader = dynamic_cast<AliPHOSLoader*>(fLoader) ;      
+  AliPHOSLoader * loader = static_cast<AliPHOSLoader*>(fLoader) ;       
                 
   TTree * tree = 0 ;    
   tree = loader->TreeS() ;      
@@ -648,11 +614,13 @@ Bool_t AliPHOS::Raw2SDigits(AliRawReader* rawReader)
   }     
   sdigits->Clear();     
                 
+  rawReader->Reset() ;
+
   const TObjArray* maps = AliPHOSRecoParam::GetMappings();
   if(!maps) AliFatal("Cannot retrieve ALTRO mappings!!");
 
-  AliAltroMapping *mapping[4];
-  for(Int_t i = 0; i < 4; i++) {
+  AliAltroMapping *mapping[20];
+  for(Int_t i = 0; i < 20; i++) {
     mapping[i] = (AliAltroMapping*)maps->At(i);
   }