// Author: Yuri Kharlov
//-----------------------------------------------------------------------------
-AliEMCALRecParam::AliEMCALRecParam():
- fClusteringThreshold(0.5),fW0(4.5),fMinECut(0.45), fUnfold(kFALSE), fLocMaxCut(0.03), //clustering
- fTrkCutX(6.0), fTrkCutY(6.0), fTrkCutZ(6.0), fTrkCutR(10.0),//track matching
- fTrkCutAlphaMin(-50.0), fTrkCutAlphaMax(50.0), fTrkCutAngle(10000.0), //track matching
- fHighLowGainFactor(16.0), fOrderParameter(2), fTau(2.35), fNoiseThreshold(3), fNPedSamples(5) //raw signal
+AliEMCALRecParam::AliEMCALRecParam() :
+ AliDetectorRecoParam(),
+ fClusteringThreshold(0.5),
+ fW0(4.5),
+ fMinECut(0.45),
+ fUnfold(kFALSE),
+ fLocMaxCut(0.03), //clustering
+ fTrkCutX(6.0),
+ fTrkCutY(6.0),
+ fTrkCutZ(6.0),
+ fTrkCutR(10.0),
+ fTrkCutAlphaMin(-50.0),
+ fTrkCutAlphaMax(50.0),
+ fTrkCutAngle(10000.0), //track matching
+ fHighLowGainFactor(16.0),
+ fOrderParameter(2),
+ fTau(2.35),
+ fNoiseThreshold(3),
+ fNPedSamples(5) //raw signal
{
// default reco values
}
+//-----------------------------------------------------------------------------
+AliEMCALRecParam::AliEMCALRecParam(const AliEMCALRecParam& rp) :
+ AliDetectorRecoParam(),
+ fClusteringThreshold(rp.fClusteringThreshold),
+ fW0(rp.fW0),
+ fMinECut(rp.fMinECut),
+ fUnfold(rp.fUnfold),
+ fLocMaxCut(rp.fLocMaxCut), //clustering
+ fTrkCutX(rp.fTrkCutX),
+ fTrkCutY(rp.fTrkCutY),
+ fTrkCutZ(rp.fTrkCutZ),
+ fTrkCutR(rp.fTrkCutR),
+ fTrkCutAlphaMin(rp.fTrkCutAlphaMin),
+ fTrkCutAlphaMax(rp.fTrkCutAlphaMax),
+ fTrkCutAngle(rp.fTrkCutAngle), //track matching
+ fHighLowGainFactor(rp.fHighLowGainFactor),
+ fOrderParameter(rp.fOrderParameter),
+ fTau(rp.fTau),
+ fNoiseThreshold(rp.fNoiseThreshold),
+ fNPedSamples(rp.fNPedSamples) //raw signal
+{
+ //copy constructor
+
+ //PID values
+ Int_t i, j;
+ for (i = 0; i < 6; i++) {
+ for (j = 0; j < 6; j++) {
+ fGamma[i][j] = rp.fGamma[i][j];
+ fHadron[i][j] = rp.fHadron[i][j];
+ fPiZero5to10[i][j] = rp.fPiZero5to10[i][j];
+ fPiZero10to60[i][j] = rp.fPiZero10to60[i][j];
+ }
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+AliEMCALRecParam& AliEMCALRecParam::operator = (const AliEMCALRecParam& rp)
+{
+ //assignment operator
+
+ if(this != &rp) {
+ fClusteringThreshold = rp.fClusteringThreshold;
+ fW0 = rp.fW0;
+ fMinECut = rp.fMinECut;
+ fUnfold = rp.fUnfold;
+ fLocMaxCut = rp.fLocMaxCut; //clustering
+ fTrkCutX = rp.fTrkCutX;
+ fTrkCutY = rp.fTrkCutY;
+ fTrkCutZ = rp.fTrkCutZ;
+ fTrkCutR = rp.fTrkCutR;
+ fTrkCutAlphaMin = rp.fTrkCutAlphaMin;
+ fTrkCutAlphaMax = rp.fTrkCutAlphaMax;
+ fTrkCutAngle = rp.fTrkCutAngle; //track matching
+ fHighLowGainFactor = rp.fHighLowGainFactor;
+ fOrderParameter = rp.fOrderParameter;
+ fTau = rp.fTau;
+ fNoiseThreshold = rp.fNoiseThreshold;
+ fNPedSamples = rp.fNPedSamples; //raw signal
+
+ //PID values
+ Int_t i, j;
+ for (i = 0; i < 6; i++) {
+ for (j = 0; j < 6; j++) {
+ fGamma[i][j] = rp.fGamma[i][j];
+ fHadron[i][j] = rp.fHadron[i][j];
+ fPiZero5to10[i][j] = rp.fPiZero5to10[i][j];
+ fPiZero10to60[i][j] = rp.fPiZero10to60[i][j];
+ }
+ }
+
+ }
+
+ return *this;
+
+}
+
+//-----------------------------------------------------------------------------
+AliEMCALRecParam* AliEMCALRecParam::GetDefaultParameters()
+{
+ //default parameters for the reconstruction
+ AliEMCALRecParam* params = new AliEMCALRecParam();
+ return params;
+
+}
+
//-----------------------------------------------------------------------------
void AliEMCALRecParam::Print(Option_t *) const
{
- printf("AliEMCALRecParam::Print()\n");
// Print reconstruction parameters to stdout
AliInfo(Form("Clusterization parameters :\n fClusteringThreshold=%.3f,\n fW0=%.3f,\n fMinECut=%.3f,\n fUnfold=%d,\n fLocMaxCut=%.3f \n",
fClusteringThreshold,fW0,fMinECut,fUnfold,fLocMaxCut));
}
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
const TObjArray* AliEMCALRecParam::GetMappings()
{
- //Returns array of AliAltroMappings for RCU0..RCUX.
- //If not found, read it from OCDB.
-
- //Quick check as follows:
- // root [0]
- //AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
- // root [1] AliCDBManager::Instance()->SetRun(1);
- // root [2] TObjArray* maps = AliEMCALRecParam::GetMappings();
- // root [3] maps->Print();
+ //Returns array of AliAltroMappings for RCU0..RCUX.
+ //If not found, read it from OCDB.
+
+ //Quick check as follows:
+ // root [0] AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT"
+ // root [1] AliCDBManager::Instance()->SetRun(1);
+ // root [2] TObjArray* maps = AliEMCALRecParam::GetMappings();
+ // root [3] maps->Print();
if(fgkMaps) return fgkMaps;
#endif
-void AliEMCALSetRecParamCDB()
+void AliEMCALSetRecParamCDB(AliRecoParam::EventSpecie_t default = AliRecoParam::kDefault)
{
- TControlBar *menu = new TControlBar("vertical","EMCAL CDB");
- menu->AddButton("Help to run EMCAL CDB","Help()",
- "Explains how to use EMCAL CDS menus");
- menu->AddButton("Set RecParam","SetRecParam()",
- "Set clusterization parameters");
- menu->AddButton("Get RecParam","GetRecParam()",
- "Get clusterization parameters");
- menu->AddButton("Exit","gApplication->Terminate(0)","Quit aliroot session");
- menu->Show();
-}
-
-//------------------------------------------------------------------------
-void Help()
-{
- char *string =
- "\n\nSet reconstruction parameters and write them into ALICE OCDB. \nPress button \"Set RecParam\" to create an object AliEMCALRecParam \nand store it to OCDB. \nPress button \"Get RecParam\" to read reconstruction parameters from OCDB \nand print then to stdout.\n\n";
- printf(string);
-}
-//------------------------------------------------------------------------
-void SetRecParam()
-{
// Create an object AliEMCALRecParam and store it to OCDB
- TString DBFolder;
- Int_t firstRun = 0;
- Int_t lastRun = 999999;
- Int_t beamPeriod = 1;
- char* objFormat = "";
+ //Activate CDB storage
+ AliCDBManager* cdb = AliCDBManager::Instance();
+ if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://OCDB");
- DBFolder ="local://LocalCDB";
- objFormat = "EMCAL reconstruction parameters";
// Create reconstruction parameter object and set parameter values
-
- AliEMCALRecParam *recParamDB = new AliEMCALRecParam();
+ TObjArray* recParamArray = new TObjArray();
+
+ //default
+ AliEMCALRecParam *recParamDB = AliEMCALRecParam::GetDefaultParameters();
+
//Clusterization
recParamDB->SetClusteringThreshold(0.5);
recParamDB->SetW0(4.5);
recParamDB->SetTau(2.35);
recParamDB->SetNoiseThreshold(3);
recParamDB->SetNPedSamples(5);
-
- // Store calibration data into database
-
- AliCDBMetaData md;
- md.SetComment(objFormat);
- md.SetBeamPeriod(beamPeriod);
- md.SetResponsible("Yuri Kharlov");
-
- AliCDBId id("EMCAL/Config/RecParam",firstRun,lastRun);
- AliCDBManager* man = AliCDBManager::Instance();
- AliCDBStorage* loc = man->GetStorage(DBFolder.Data());
- loc->Put(recParamDB, id, &md);
- recParamDB->Print();
-}
-
-//------------------------------------------------------------------------
-void GetRecParam()
-{
- // Read reconstruction parameters from OCDB
-
- TString DBFolder;
-
- // DBFolder ="local://LocalCDB";
- DBFolder ="local://$ALICE_ROOT";
- Int_t runNumber = 0;
-
- AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
- AliCDBManager::Instance()->SetSpecificStorage("EMCAL/*",DBFolder.Data());
+ //Add to the recParamArray
+ recParamDB->SetEventSpecie(AliRecoParam::kDefault);
+ recParamArray->AddLast(recParamDB);
+
+ //Add other options here, if desired, for
+ //Cosmic, LowMult and HighMult type events
+ //and add them to the array
+
+ //Set the default version in the array
+ Bool_t defaultIsSet = kFALSE;
+ for(Int_t i = 0; i < recParamArray->GetEntriesFast(); i++) {
+ AliDetectorRecoParam* param = (AliDetectorRecoParam*)recParamArray->UncheckedAt(i);
+ if(!param) continue;
+ if(default & param->GetEventSpecie()) {
+ param->SetAsDefault();
+ defaultIsSet = kTRUE;
+ }
+ }
- AliCDBEntry* cdbEntry = AliCDBManager::Instance()->Get("EMCAL/Config/RecParam/",runNumber);
- if (cdbEntry == 0) {
- cerr << "No CDBEntry found at path "<<DBFolder.Data()<<"/"<<"EMCAL/Config/RecParam/"<<endl;
+ if(!defaultIsSet) {
+ AliError("The default reconstruction parameters are not set! Exiting...");
return;
}
- AliEMCALRecParam* recParam = (AliEMCALRecParam*)cdbEntry->GetObject();
- if (recParam != 0) recParam->Print("");
- else
- cerr << "GetRecParam(): no AliEMCALRecParam object is found in OCDB" << endl;
+ // Store calibration data into database
+ AliCDBMetaData *md = new AliCDBMetaData();
+ md->SetResponsible("J. Klay");
+ md->SetComment("Reconstruction Parameters: EMCAL");
+ md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
+ md->SetBeamPeriod(0);
+
+ AliCDBId id("EMCAL/Calib/RecoParam",0,AliCDBRunRange::Infinity());
+ cdb->GetDefaultStorage()->Put(recParamDB, id, md);
+ recParamDB->Print();
+ return;
}