]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDClusterFinder.cxx
update from Marco
[u/mrichter/AliRoot.git] / PMD / AliPMDClusterFinder.cxx
index 0b02d321a7d57ae4939b5d386e4154b0514e0e64..4d9a77a140e71081a0dd6afda2b8ad74f3b11c3e 100644 (file)
@@ -46,7 +46,9 @@
 #include "AliPMDddldata.h"
 #include "AliPMDHotData.h"
 #include "AliPMDNoiseCut.h"
+#include "AliPMDddlinfoData.h"
 #include "AliPMDRecoParam.h"
+#include "AliRecoParam.h"
 #include "AliPMDReconstructor.h"
 
 #include "AliDAQ.h"
@@ -64,6 +66,7 @@ AliPMDClusterFinder::AliPMDClusterFinder():
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -86,6 +89,7 @@ AliPMDClusterFinder::AliPMDClusterFinder(AliRunLoader* runLoader):
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -109,6 +113,7 @@ AliPMDClusterFinder::AliPMDClusterFinder(const AliPMDClusterFinder & finder):
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -150,19 +155,19 @@ AliPMDClusterFinder::~AliPMDClusterFinder()
 // ------------------------------------------------------------------------- //
 
 void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
-                                          TTree *clustersTree)
+                                          TTree *clustersTree, Int_t gRecoMode)
 {
   // Converts digits to recpoints after running clustering
   // algorithm on CPV plane and PREshower plane
   //
   // This algorithm is called during the reconstruction from digits
 
-  Int_t    det = 0,smn = 0;
-  Int_t    xpos,ypos;
-  Float_t  adc;
-  Int_t    ismn;
-  Int_t    idet;
-  Float_t  clusdata[6];
+  Int_t    det  = 0, smn = 0;
+  Int_t    xpos = 0, ypos = 0;
+  Int_t    ismn = 0;
+  Int_t    idet = 0;
+  Float_t  adc  = 0.;
+  Float_t  clusdata[6] = {0.,0.,0.,0.,0.,0.};
 
   AliPMDcluster *pmdcl = 0x0;
 
@@ -264,12 +269,36 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
 
 
       // Int_t cluspar = fRecoParam->GetPbPbParam()->GetClusteringParam();
-      Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
+      AliPMDRecoParam * par = fRecoParam->GetPPParam();
+      Int_t cluspar = par->GetClusteringParam();
+      delete par;
+
       // Int_t cluspar = fRecoParam->GetCosmicParam()->GetClusteringParam();
+      
+      //_______________________________________________________// 
+      //Added to switch Refine and crude Clustering - satya//
+      // temporary solution - will be sorted out later
+      /*cluspar = 1;
+      static AliPMDRecoParam *reconp = NULL;
+      reconp = (AliPMDRecoParam*)AliPMDReconstructor::GetRecoParam();
+      if(!reconp) {
+       cluspar = 1;
+      } 
+      else { 
+       
+      if( reconp->GetClusteringParam() == 1) 
+       cluspar = 1;
+      if( reconp->GetClusteringParam() == 2) 
+       cluspar = 2;
+       }
 
+      */
+      cluspar = gRecoMode;
+      //_______________________________________________________// 
+      
       pmdclust->SetClusteringParam(cluspar);
 
-      Float_t encut = 0.;
+      Float_t encut = 4.;
       pmdclust->SetEdepCut(encut);
       pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,pmdcont);
       
@@ -322,7 +351,7 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
 // ------------------------------------------------------------------------- //
 
 void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
-                                          TTree *clustersTree)
+                                          TTree *clustersTree, Int_t gRecoMode)
 {
   // Converts RAW data to recpoints after running clustering
   // algorithm on CPV and PREshower plane
@@ -340,34 +369,15 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
 
   AliPMDClustering *pmdclust = new AliPMDClusteringV1();
 
-  // open the ddl file info to know the module
-  TString ddlinfofileName(gSystem->Getenv("ALICE_ROOT"));
-  ddlinfofileName += "/PMD/PMD_ddl_info.dat";
-  
-  ifstream infileddl;
-  infileddl.open(ddlinfofileName.Data(), ios::in); // ascii file
-  if(!infileddl) AliError("Could not read the ddl info file");
+  // access the ddlinfo database to fetch  the no of modules per DDL
 
-  Int_t ddlno;
-  Int_t modno;
-  Int_t modulePerDDL;
-  Int_t moduleddl[6];
+  Int_t moduleddl[6] = {0,0,0,0,0,0};
 
   for(Int_t jddl = 0; jddl < 6; jddl++)
     {
-      if (infileddl.eof()) break;
-      infileddl >> ddlno >> modulePerDDL;
-      moduleddl[jddl] = modulePerDDL;
-
-      if (modulePerDDL == 0) continue;
-      for (Int_t im = 0; im < modulePerDDL; im++)
-       {
-         infileddl >> modno;
-       }
+      moduleddl[jddl] = fDdlinfo->GetNoOfModulePerDdl(jddl);
     }
 
-  infileddl.close();
-
   // Set the minimum noise cut per module before clustering
 
   fRecoParam = AliPMDReconstructor::GetRecoParam();
@@ -449,7 +459,6 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
              continue; 
            }
 
-
          // Pedestal Subtraction
          Int_t   pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
          Int_t   pedrms1    = (Int_t) pedmeanrms%100;
@@ -461,7 +470,6 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
          // Float_t sig1 = (Float_t) sig;
          Float_t sig1 = (Float_t) sig - (pedmean + 3.0*pedrms);
 
-
          // Hot cell - set the cell adc = 0
          Float_t hotflag = fCalibHot->GetHotChannel(det,smn,row,col);
          if (hotflag == 1.) sig1 = 0;
@@ -589,8 +597,32 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
          Int_t imod = idet*24 + ismn;
 
          // Int_t cluspar = fRecoParam->GetPbPbParam()->GetClusteringParam();
-         Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
+         AliPMDRecoParam * par = fRecoParam->GetPPParam();
+          Int_t cluspar = par->GetClusteringParam();
+          delete par;
          // Int_t cluspar = fRecoParam->GetCosmicParam()->GetClusteringParam();
+
+         //_______________________________________________________// 
+         //Added to switch Refine and crude Clustering - satya//
+         // temporary solution - will be sorted out later
+         /* cluspar = 1;
+         static AliPMDRecoParam *reconp = NULL;
+         reconp = (AliPMDRecoParam*)AliPMDReconstructor::GetRecoParam();
+         if(!reconp) {
+           cluspar = 1;
+         } 
+         else { 
+           if( reconp->GetClusteringParam() == 1) 
+             cluspar = 1;
+           if( reconp->GetClusteringParam() == 2) 
+             cluspar = 2;
+         }*/
+
+
+         cluspar = gRecoMode; // permanent solution
+
+         //_______________________________________________________// 
+
          pmdclust->SetClusteringParam(cluspar);
          Float_t encut = fNoiseCut->GetNoiseCut(imod);
 
@@ -802,4 +834,20 @@ AliPMDNoiseCut* AliPMDClusterFinder::GetNoiseCut() const
   
   return ncut;
 }
+//--------------------------------------------------------------------//
+AliPMDddlinfoData* AliPMDClusterFinder::GetDdlinfoData() const
+{
+  // The run number will be centralized in AliCDBManager,
+  // you don't need to set it here!
+  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("PMD/Calib/Ddlinfo");
+  
+  if(!entry) AliFatal("ddlinfo object retrieval failed!");
+  
+  AliPMDddlinfoData *ddlinfo = 0;
+  if (entry) ddlinfo = (AliPMDddlinfoData*) entry->GetObject();
+  
+  if (!ddlinfo)  AliFatal("No ddl info data from  database !");
+  
+  return ddlinfo;
+}