]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSGetter.cxx
No overlpas with L3 magnet
[u/mrichter/AliRoot.git] / PHOS / AliPHOSGetter.cxx
index afbdea213aa6c6434a506809f27b0dd3ba3aa4e1..bbeb14e091fff254c37259e813c5c2229061dd7c 100644 (file)
@@ -69,6 +69,9 @@
 #include "AliCDBLocal.h"
 #include "AliCDBStorage.h"
 #include "AliCDBManager.h"
+#include "AliPHOSRawDigiProducer.h"
+#include "AliPHOSReconstructor.h"
+#include "AliPHOSRecoParam.h"
 
 ClassImp(AliPHOSGetter)
   
@@ -465,7 +468,7 @@ AliPHOSGetter * AliPHOSGetter::Instance(const char* alirunFileName, const char*
       }
     }
     else {
-      AliRunLoader * rl = AliRunLoader::GetRunLoader(fgPhosLoader->GetTitle()) ; 
+      rl = AliRunLoader::GetRunLoader(fgPhosLoader->GetTitle()) ; 
       if ( strstr(version, AliConfig::GetDefaultEventFolderName()) ) // false in case of merging
        delete rl ; 
       fgObjGetter = new AliPHOSGetter(alirunFileName, version, openingOption) ;      
@@ -543,24 +546,6 @@ AliPHOSPID * AliPHOSGetter::PID()
   return rv ; 
 }
 
-//____________________________________________________________________________ 
-AliPHOSGeometry * AliPHOSGetter::PHOSGeometry() const 
-{
-  // Returns PHOS geometry
-
-  AliPHOSGeometry * rv = 0 ; 
-  if (PHOS() )
-    rv =  PHOS()->GetGeometry() ;
-  else {
-    rv = AliPHOSGeometry::GetInstance();
-    if (!rv) {
-      AliError("Could not find PHOS geometry! Loading the default one !");
-      rv = AliPHOSGeometry::GetInstance("IHEP","");
-    }
-  }
-  return rv ; 
-} 
-
 //____________________________________________________________________________ 
 TClonesArray * AliPHOSGetter::Primaries()  
 {
@@ -742,76 +727,18 @@ Int_t AliPHOSGetter::ReadRaw(AliRawReader *rawReader,Bool_t isOldRCUFormat)
 
   AliPHOSRawDecoder dc(rawReader);
   dc.SetOldRCUFormat(isOldRCUFormat);
-  dc.SubtractPedestals(kTRUE);
-
-  Int_t relId[4], absId =0;
-  Bool_t lowGainFlag = kFALSE ; 
+  dc.SubtractPedestals(AliPHOSReconstructor::GetRecoParamEmc()->SubtractPedestals());
 
   TClonesArray * digits = Digits() ;
-  digits->Clear() ;
-
-  Int_t    iDigit   = 0 ; 
-  Double_t time     = 0. ;
-  Int_t    iOldDigit;
-  Bool_t   seen;    
-
-  while (dc.NextDigit()) {  
-
-    lowGainFlag = dc.IsLowGain();
-    time = dc.GetTime();
-
-    relId[0] = dc.GetModule();
-    relId[1] = 0;
-    relId[2] = dc.GetRow();
-    relId[3] = dc.GetColumn();
-
-    if(!PHOSGeometry()) AliFatal("Couldn't find PHOSGeometry!");
-    PHOSGeometry()->RelToAbsNumbering(relId, absId);
-    AliDebug(2,Form("relId=(mod,row,col)=(%d,%d,%d), absId=%d\n\n",
-                   relId[0],relId[2],relId[3],absId));
-
-    // Add low gain digit only 
-    //if the high gain digit does not exist in the digits array
-
-    seen = kFALSE;
-    
-    if(lowGainFlag) {
-      for (iOldDigit=iDigit-1; iOldDigit>=0; iOldDigit--) {
-       if ((dynamic_cast<AliPHOSDigit*>(digits->At(iOldDigit)))->GetId() == absId) {
-         seen = kTRUE;
-         break;
-       }
-      }
-      if (!seen) {
-       new((*digits)[iDigit]) AliPHOSDigit(-1,absId,(Float_t)dc.GetEnergy(),time);
-       iDigit++;
-      }
-    }
-
-    // Add high gain digit only if it is not saturated;
-    // replace low gain digit by a high gain one
-    else {
-      if (dc.GetEnergy() >= 1023) continue;
-      for (iOldDigit=iDigit-1; iOldDigit>=0; iOldDigit--) {
-       if ((dynamic_cast<AliPHOSDigit*>(digits->At(iOldDigit)))->GetId() == absId) {
-         digits->RemoveAt(iOldDigit);
-         new((*digits)[iOldDigit]) AliPHOSDigit(-1,absId,(Float_t)dc.GetEnergy(),time);
-         seen = kTRUE;
-         break;
-       }
-      }
-      if (!seen) {
-       new((*digits)[iDigit]) AliPHOSDigit(-1,absId,(Float_t)dc.GetEnergy(),time);
-       iDigit++;
-      }
-    }
-    
-    
+  AliPHOSRawDigiProducer pr;
+  pr.MakeDigits(digits,&dc);
+  
+  //ADC counts -> GeV
+  for(Int_t i=0; i<digits->GetEntries(); i++) {
+    AliPHOSDigit* digit = (AliPHOSDigit*)digits->At(i);
+    digit->SetEnergy(digit->GetEnergy()/AliPHOSPulseGenerator::GeV2ADC());
   }
   
-  digits->Compress() ;
-  digits->Sort() ;
-
   //!!!!for debug!!!
   Int_t modMax=-111;
   Int_t colMax=-111;
@@ -819,10 +746,12 @@ Int_t AliPHOSGetter::ReadRaw(AliRawReader *rawReader,Bool_t isOldRCUFormat)
   Float_t eMax=-333;
   //!!!for debug!!!
 
-  for(iDigit=0; iDigit<digits->GetEntries(); iDigit++) {
+  AliPHOSGeometry * phosgeom =  AliPHOSGeometry::GetInstance() ;
+  Int_t relId[4];
+  for(Int_t iDigit=0; iDigit<digits->GetEntries(); iDigit++) {
     AliPHOSDigit* digit = (AliPHOSDigit*)digits->At(iDigit);
     if(digit->GetEnergy()>eMax) {
-      PHOSGeometry()->AbsToRelNumbering(digit->GetId(),relId);
+      phosgeom->AbsToRelNumbering(digit->GetId(),relId);
       eMax=digit->GetEnergy();
       modMax=relId[0];
       rowMax=relId[2];
@@ -869,7 +798,6 @@ Int_t AliPHOSGetter::ReadTreeR() const
   // gets TreeR from the root file (PHOS.RecPoints.root)
   //if ( !IsLoaded("R") ) {
     PhosLoader()->LoadRecPoints("UPDATE") ;
-    PhosLoader()->LoadClusterizer("UPDATE") ;
     //  SetLoaded("R") ; 
     //}