X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSRecoParam.cxx;h=be3ad2b63d4132669afcf46ab3680bd923bccd88;hb=830fc9e223bea18a6860bd27022ca6f71ee303a6;hp=a35ba14f710280d204bb88c99c52e0caaade0798;hpb=58f66025b7b8f8af28ecee9a5e5e0d942562187c;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSRecoParam.cxx b/PHOS/AliPHOSRecoParam.cxx index a35ba14f710..be3ad2b63d4 100644 --- a/PHOS/AliPHOSRecoParam.cxx +++ b/PHOS/AliPHOSRecoParam.cxx @@ -20,21 +20,75 @@ // Author: Boris Polichtchouk. // --- AliRoot header files --- +#include "AliCDBManager.h" +#include "AliCDBEntry.h" +#include "AliLog.h" #include "AliPHOSRecoParam.h" ClassImp(AliPHOSRecoParam) +TObjArray* AliPHOSRecoParam::fgkMaps =0; //ALTRO mappings +TObject* AliPHOSRecoParam::fgkTrigParams =0; // Trigger parameters + //----------------------------------------------------------------------------- -AliPHOSRecoParam::AliPHOSRecoParam() : TNamed(), - fClusteringThreshold(9999),fLocMaxCut(9999),fMinE(9999),fW0(9999) +AliPHOSRecoParam::AliPHOSRecoParam() : + AliDetectorRecoParam(), + fNonLinearityParams(3), + fEMCClusteringThreshold(0.2), + fEMCLocMaxCut(0.03), + fEMCRawDigitThreshold(2), + fEMCMinE(0.012), + fEMCW0(4.5), + fEMCSampleQualityCut(1.), + fTimeGateAmpThresh(10.), + fTimeGateLow(1.e-6), + fTimeGateHigh(1.e-6), + fEMCEcoreRadius(3.), + fEMCEcore2ESD(kFALSE), + fEMCSubtractPedestals(kTRUE), + fEMCUnfold(kTRUE), + fEMCEnergyCorrectionOn(kTRUE), + fEMCFitterVersion(""), + fNonlinearityCorrVersion(""), + fGlobalAltroOffset(0), + fGlobalAltroThreshold(0), + fCPVClusteringThreshold(0.0), + fCPVLocMaxCut(0.03), + fCPVMinE(0.0), + fCPVW0(4.0), + fCPVUnfold(kTRUE) { //Default constructor. + SetNonlinearityCorrectionVersion("Gustavo2005") ; } //----------------------------------------------------------------------------- -AliPHOSRecoParam::AliPHOSRecoParam(const AliPHOSRecoParam& recoParam): - TNamed(recoParam),fClusteringThreshold(recoParam.fClusteringThreshold), - fLocMaxCut(recoParam.fLocMaxCut),fMinE(recoParam.fMinE),fW0(recoParam.fW0) +AliPHOSRecoParam::AliPHOSRecoParam(const AliPHOSRecoParam& ): + AliDetectorRecoParam(), + fNonLinearityParams(3), + fEMCClusteringThreshold(0.2), + fEMCLocMaxCut(0.03), + fEMCRawDigitThreshold(2), + fEMCMinE(0.012), + fEMCW0(4.5), + fEMCSampleQualityCut(1.), + fTimeGateAmpThresh(10.), + fTimeGateLow(1.e-6), + fTimeGateHigh(1.e-6), + fEMCEcoreRadius(3.), + fEMCEcore2ESD(kFALSE), + fEMCSubtractPedestals(kTRUE), + fEMCUnfold(kTRUE), + fEMCEnergyCorrectionOn(kTRUE), + fEMCFitterVersion(""), + fNonlinearityCorrVersion(""), + fGlobalAltroOffset(0), + fGlobalAltroThreshold(0), + fCPVClusteringThreshold(0.0), + fCPVLocMaxCut(0.03), + fCPVMinE(0.0), + fCPVW0(4.0), + fCPVUnfold(kTRUE) { //Copy constructor. } @@ -45,12 +99,145 @@ AliPHOSRecoParam& AliPHOSRecoParam::operator = (const AliPHOSRecoParam& recoPara //Assignment operator. if(this != &recoParam) { - fClusteringThreshold = recoParam.fClusteringThreshold; - fLocMaxCut = recoParam.fLocMaxCut; - fMinE = recoParam.fMinE; - fW0 = recoParam.fW0; + fNonLinearityParams = recoParam.fNonLinearityParams; + fEMCClusteringThreshold = recoParam.fEMCClusteringThreshold; + fEMCLocMaxCut = recoParam.fEMCLocMaxCut; + fEMCRawDigitThreshold = recoParam.fEMCRawDigitThreshold; + fEMCMinE = recoParam.fEMCMinE; + fEMCW0 = recoParam.fEMCW0; + fEMCSampleQualityCut = recoParam.fEMCSampleQualityCut; + fTimeGateAmpThresh = recoParam.fTimeGateAmpThresh ; + fTimeGateLow = recoParam.fTimeGateLow ; + fTimeGateHigh = recoParam.fTimeGateHigh ; + fEMCEcoreRadius = recoParam.fEMCEcoreRadius; + fEMCEcore2ESD = recoParam.fEMCEcore2ESD; + fEMCSubtractPedestals = recoParam.fEMCSubtractPedestals; + fEMCUnfold = recoParam.fEMCUnfold; + fEMCEnergyCorrectionOn = recoParam.fEMCEnergyCorrectionOn; + fEMCFitterVersion = recoParam.fEMCFitterVersion; + fNonlinearityCorrVersion= recoParam.fNonlinearityCorrVersion; + fGlobalAltroOffset = recoParam.fGlobalAltroOffset; + fGlobalAltroThreshold = recoParam.fGlobalAltroThreshold; + fCPVClusteringThreshold = recoParam.fCPVClusteringThreshold; + fCPVLocMaxCut = recoParam.fCPVLocMaxCut; + fCPVMinE = recoParam.fCPVMinE; + fCPVW0 = recoParam.fCPVW0; + fCPVUnfold = recoParam.fCPVUnfold; + fNonLinearityParams = recoParam.fNonLinearityParams ; } return *this; } +//----------------------------------------------------------------------------- +void AliPHOSRecoParam::Print(Option_t * /*option*/) const +{ + AliDebug(2,Form("PHOS reconstruction parameters:\n" + "\tEMCClusteringThreshold = %f\n" + "\tEMCLocMaxCut = %f\n" + "\tEMCRawDigitThreshold = %f\n" + "\tEMCMinE = %f\n" + "\tEMCW0 = %f\n" + "\tEMCSampleQualityCut = %f\n" + "\tEMCEcoreRadius = %f\n" + "\tEMCEcore2ESD = %d\n" + "\tEMCSubtractPedestals = %d\n" + "\tEMCUnfold = %d\n" + "\tEMCEnergyCorrectionOn = %d\n" + "\tEMCFitterVersion = \"%s\"\n" + "\tGlobalAltroOffset = %d\n" + "\tGlobalAltroThreshold = %d", + fEMCClusteringThreshold, + fEMCLocMaxCut, + fEMCRawDigitThreshold, + fEMCMinE, + fEMCW0, + fEMCSampleQualityCut, + fEMCEcoreRadius, + fEMCEcore2ESD, + fEMCSubtractPedestals, + fEMCUnfold, + fEMCEnergyCorrectionOn, + fEMCFitterVersion.Data(), + fGlobalAltroOffset, + fGlobalAltroThreshold)); + +} + +//----------------------------------------------------------------------------- +AliPHOSRecoParam* AliPHOSRecoParam::GetDefaultParameters() +{ + //Default parameters for the reconstruction + + AliPHOSRecoParam* params = new AliPHOSRecoParam(); + return params; +} + +//----------------------------------------------------------------------------- +const TObjArray* AliPHOSRecoParam::GetMappings() +{ + //Returns array of AliAltroMappings for RCU0..RCU3. + //If not found, read it from OCDB. + + //Quick check as follows: + // root [0] AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + // root [1] AliCDBManager::Instance()->SetRun(1); + // root [2] TObjArray* maps = AliPHOSRecoParam::GetMappings(); + // root [3] maps->Print(); + + if(fgkMaps) return fgkMaps; + + AliCDBEntry* entry = AliCDBManager::Instance()->Get("PHOS/Calib/Mapping"); + if(entry) + fgkMaps = (TObjArray*)entry->GetObject(); + + return fgkMaps; + +} +//----------------------------------------------------------------------------- +void AliPHOSRecoParam::SetNonlinearityCorrectionVersion(const char * ver){ + //Set non-linearity correction version and adjust parameters + + if(strcmp(ver,"NoCorrection")==0){ + fNonLinearityParams.Set(1) ; + fNonLinearityParams.AddAt(0.,0) ; + fNonlinearityCorrVersion=ver ; + return ; + } + if(strcmp(ver,"Henrik2010")==0){ + Float_t pars[7]={1.051,2.54e-003,-1.737e-002,5.69e-002,3.3e-001,1.42e-001,1.50e-002} ; + fNonLinearityParams.Set(7,pars) ; + fNonlinearityCorrVersion=ver ; + return ; + } + if(strcmp(ver,"Gustavo2005")==0){ + Float_t pars[3]={0.0241, 1.0504, 0.000249} ; + fNonLinearityParams.Set(3,pars) ; + fNonlinearityCorrVersion=ver ; + return ; + } + AliError(Form("Non known correction version: %s, still using default \n",ver)) ; + + +} + +//----------------------------------------------------------------------------- +const TObject* AliPHOSRecoParam::GetTriggerParameters() +{ + //Returns trigger parameters. + + //Quick check as follows: + // root [0] AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + // root [1] AliCDBManager::Instance()->SetRun(158171); + // root [2] TObject* parameters = AliPHOSRecoParam::GetTriggerParameters(); + // root [3] parameters->Print(); + + if(fgkTrigParams) return fgkTrigParams; + + AliCDBEntry* entry = AliCDBManager::Instance()->Get("PHOS/Trigger/Parameters"); + if(entry) + fgkTrigParams = entry->GetObject(); + + return fgkTrigParams; + +}