#include "AliPMDddldata.h"
#include "AliPMDHotData.h"
#include "AliPMDNoiseCut.h"
+#include "AliPMDddlinfoData.h"
#include "AliPMDRecoParam.h"
#include "AliPMDReconstructor.h"
fCalibPed(GetCalibPed()),
fCalibHot(GetCalibHot()),
fNoiseCut(GetNoiseCut()),
+ fDdlinfo(GetDdlinfoData()),
fRecoParam(0x0),
fTreeD(0),
fTreeR(0),
fCalibPed(GetCalibPed()),
fCalibHot(GetCalibHot()),
fNoiseCut(GetNoiseCut()),
+ fDdlinfo(GetDdlinfoData()),
fRecoParam(0x0),
fTreeD(0),
fTreeR(0),
fCalibPed(GetCalibPed()),
fCalibHot(GetCalibHot()),
fNoiseCut(GetNoiseCut()),
+ fDdlinfo(GetDdlinfoData()),
fRecoParam(0x0),
fTreeD(0),
fTreeR(0),
//
// 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;
// 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);
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();
continue;
}
-
// Pedestal Subtraction
Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
Int_t pedrms1 = (Int_t) pedmeanrms%100;
// 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;
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);
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;
+}