]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDClusterFinder.cxx
bug fixed
[u/mrichter/AliRoot.git] / PMD / AliPMDClusterFinder.cxx
index 0af1a5f3e86f1e257dfe33615a46085a6e34d6b0..18d5d27d4a6d3968aebc3ce043d2582d74b62fc2 100644 (file)
@@ -46,6 +46,7 @@
 #include "AliPMDddldata.h"
 #include "AliPMDHotData.h"
 #include "AliPMDNoiseCut.h"
+#include "AliPMDddlinfoData.h"
 #include "AliPMDRecoParam.h"
 #include "AliPMDReconstructor.h"
 
@@ -64,6 +65,7 @@ AliPMDClusterFinder::AliPMDClusterFinder():
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -86,6 +88,7 @@ AliPMDClusterFinder::AliPMDClusterFinder(AliRunLoader* runLoader):
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -109,6 +112,7 @@ AliPMDClusterFinder::AliPMDClusterFinder(const AliPMDClusterFinder & finder):
   fCalibPed(GetCalibPed()),
   fCalibHot(GetCalibHot()),
   fNoiseCut(GetNoiseCut()),
+  fDdlinfo(GetDdlinfoData()),
   fRecoParam(0x0),
   fTreeD(0),
   fTreeR(0),
@@ -157,12 +161,12 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
   //
   // 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,11 +268,12 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
 
 
       // Int_t cluspar = fRecoParam->GetPbPbParam()->GetClusteringParam();
-      //Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
+      Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
       // Int_t cluspar = fRecoParam->GetCosmicParam()->GetClusteringParam();
 
+      pmdclust->SetClusteringParam(cluspar);
 
-      Float_t encut = 0.;
+      Float_t encut = 4.;
       pmdclust->SetEdepCut(encut);
       pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,pmdcont);
       
@@ -339,34 +344,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();
@@ -448,7 +434,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;
@@ -460,7 +445,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;
@@ -588,9 +572,9 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
          Int_t imod = idet*24 + ismn;
 
          // Int_t cluspar = fRecoParam->GetPbPbParam()->GetClusteringParam();
-         // Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
+         Int_t cluspar = fRecoParam->GetPPParam()->GetClusteringParam();
          // Int_t cluspar = fRecoParam->GetCosmicParam()->GetClusteringParam();
-         
+         pmdclust->SetClusteringParam(cluspar);
          Float_t encut = fNoiseCut->GetNoiseCut(imod);
 
          pmdclust->SetEdepCut(encut);
@@ -801,4 +785,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;
+}