From 2df607fadea209d008a02b6253e248c28bff2bf6 Mon Sep 17 00:00:00 2001 From: hristov Date: Sun, 24 Jun 2007 21:51:20 +0000 Subject: [PATCH] New class replacing the macro AliTPCDBTemp.C (Haavard) --- TPC/AliTPCDBTemp.C | 113 ---------------------- TPC/AliTPCDBTemp.cxx | 219 +++++++++++++++++++++++++++++++++++++++++++ TPC/AliTPCDBTemp.h | 26 +++-- 3 files changed, 238 insertions(+), 120 deletions(-) delete mode 100644 TPC/AliTPCDBTemp.C create mode 100644 TPC/AliTPCDBTemp.cxx diff --git a/TPC/AliTPCDBTemp.C b/TPC/AliTPCDBTemp.C deleted file mode 100644 index 7cffba4cab4..00000000000 --- a/TPC/AliTPCDBTemp.C +++ /dev/null @@ -1,113 +0,0 @@ -/** -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliSplineFit.cxx+ -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliDCSSensor.cxx+ -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliDCSSensorArray.cxx+ -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliTPCSensorTemp.cxx+ -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliTPCSensorTempArray.cxx+ -.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliTPCDBTemp.C+ -TTimeStamp startTime(2006,10,18,0,0,0,0,kFALSE) -TTimeStamp endTime(2006,10,19,0,0,0,0,kFALSE) -Int_t run=2546 -AliTPCDBTemp db -db->Init(run) -db->MakeCalib("TempSensor.txt","DCSMap.root",startTime,endTime,run) - - -**/ -#include "AliTPCDBTemp.h" - -AliTPCDBTemp::AliTPCDBTemp(): - fFirstRun(0), - fLastRun(0), - fTemperature(0), - fStorLoc(0), - fCalib(0), - fMetaData(0) -{} - - - -void AliTPCDBTemp::MakeCalib(const char *fList, const char *fMap, - const TTimeStamp& startTime, - const TTimeStamp& endTime, - Int_t run ) -{ - // The Terminate() function is the last function to be called during - // a query. It always runs on the client, it can be used to present - // the results graphically or save the results to file. - - AliTPCSensorTempArray *fTemperature = new AliTPCSensorTempArray(fList); - fTemperature->SetStartTime(startTime); - fTemperature->SetEndTime(endTime); - TMap* map = SetGraphFile(fMap); - if (map) { - fTemperature->MakeSplineFit(map); - } - delete map; - - SetFirstRun(run); - SetLastRun(run); - StoreObject("TPC/Calib/Temperature",fTemperature, fMetaData); -} - - -AliCDBMetaData* AliTPCDBTemp::CreateMetaObject(const char* objectClassName) -{ - AliCDBMetaData *md1= new AliCDBMetaData(); - md1->SetObjectClassName(objectClassName); - md1->SetResponsible("Haavard Helstrup"); - md1->SetBeamPeriod(2); - md1->SetAliRootVersion("05-13-04"); //root version - md1->SetComment("Temperature values"); - - return md1; -} - -void AliTPCDBTemp::StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData) -{ - - AliCDBId id1(cdbPath, fFirstRun, fLastRun); - if (fStorLoc) fStorLoc->Put(object, id1, metaData); -} - -void AliTPCDBTemp::Init(Int_t run){ - -// Int_t kLastRun=4000; -// Long64_t longRun; - - SetFirstRun(run); - SetLastRun(run); - - InitDB(run); -// fCalib = AliTPCcalibDB::Instance(); -// longRun=run; -// fCalib->SetRun(longRun); -// fTemperature = fCalib->GetTemperature(); - -} - -void AliTPCDBTemp::InitDB(Int_t run) -{ - // Data base generation - -// printf ("Data base creation started.. \n"); - char *CDBpath="local:///afs/cern.ch/alice/tpctest/Calib/"; - - fMetaData = CreateMetaObject("AliTPCSensorTempArray"); - AliCDBManager *man = AliCDBManager::Instance(); - man->SetDefaultStorage("local:///afs/cern.ch/alice/tpctest/AliRoot/HEAD"); - man->SetRun(run); - man->SetSpecificStorage("TPC/*/*","local:///afs/cern.ch/alice/tpctest/Calib"); - fStorLoc = man->GetStorage(CDBpath); - if (!fStorLoc) return; -} -//_____________________________________________________________________________ -TMap* AliTPCDBTemp::SetGraphFile(const char *fname) -{ - // - // Read DCS maps from file given by fname - // - TFile file(fname); - TMap * map = (TMap*)file.Get("DCSMap"); - return map; -} diff --git a/TPC/AliTPCDBTemp.cxx b/TPC/AliTPCDBTemp.cxx new file mode 100644 index 00000000000..fb2b2d470d3 --- /dev/null +++ b/TPC/AliTPCDBTemp.cxx @@ -0,0 +1,219 @@ +/** +.L /afs/cern.ch/user/h/haavard/alice/tpc/temperature/AliTPCDBTemp.C+ +TTimeStamp startTime(2006,10,18,0,0,0,0,kFALSE) +TTimeStamp endTime(2006,10,19,0,0,0,0,kFALSE) +Int_t run=2546 +AliTPCDBTemp db +db->Init(run) +db->MakeCalib("TempSensor.txt","DCSMap.root",startTime,endTime,run) + + +**/ +#include "AliTPCDBTemp.h" + +ClassImp(AliTPCDBTemp) + +const Int_t kValCut = 100; // discard temperatures > 100 degrees +const Int_t kDiffCut = 5; // discard temperature differences > 5 degrees + +//______________________________________________________________________________________________ + +AliTPCDBTemp::AliTPCDBTemp(): + fFirstRun(0), + fLastRun(0), + fTemperature(0), + fStorLoc(0), + fCalib(0), + fMetaData(0), + fConfTree(0) +{} +//______________________________________________________________________________________________ + +AliTPCDBTemp::AliTPCDBTemp(const AliTPCDBTemp& org): + TObject(org), + fFirstRun(org.fFirstRun), + fLastRun(org.fLastRun), + fTemperature(0), + fStorLoc(0), + fCalib(0), + fMetaData(0), + fConfTree(0) +{ +// +// Copy constructor +// + + ((AliTPCDBTemp &) org).Copy(*this); +} + +//______________________________________________________________________________________________ +AliTPCDBTemp::~AliTPCDBTemp(){ +// +// destructor +// + fCalib->Terminate(); + delete fTemperature; + delete fMetaData; + delete fConfTree; +} + +//______________________________________________________________________________________________ +AliTPCDBTemp& AliTPCDBTemp::operator= (const AliTPCDBTemp& org ) +{ + // + // assignment operator + // + if (&org == this) return *this; + + new (this) AliTPCDBTemp(org); + return *this; +} + +//______________________________________________________________________________________________ +void AliTPCDBTemp::Copy(TObject &c) const +{ + // + // Copy function + // + + TObject::Copy(c); +} + + +//______________________________________________________________________________________________ + +void AliTPCDBTemp::MakeCalib(const char *fList, const char *fMap, + const TTimeStamp& startTime, + const TTimeStamp& endTime, + Int_t run ) +{ + // The Terminate() function is the last function to be called during + // a query. It always runs on the client, it can be used to present + // the results graphically or save the results to file. + + AliTPCSensorTempArray *fTemperature = new AliTPCSensorTempArray(fList); + fTemperature->SetStartTime(startTime); + fTemperature->SetEndTime(endTime); + fTemperature->SetValCut(kValCut); + fTemperature->SetDiffCut(kDiffCut); + TMap* map = SetGraphFile(fMap); + if (map) { + fTemperature->MakeSplineFit(map); + } + delete map; + map=0; + fMap=0; + + SetFirstRun(run); + SetLastRun(run); + StoreObject("TPC/Calib/Temperature",fTemperature, fMetaData); +} + +//______________________________________________________________________________________________ +void AliTPCDBTemp::MakeConfig(const char *file, Int_t firstRun, Int_t lastRun ) +{ + // + // Store Configuration file to OCDB + // + + TTree *tree = ReadListTree(file); + SetConfTree(tree); + SetFirstRun(firstRun); + SetLastRun(lastRun); + + AliCDBMetaData* metaConf=CreateMetaObject("TTree"); + StoreObject("TPC/Config/Temperature",fConfTree, metaConf); +} + + +//______________________________________________________________________________________________ + +AliCDBMetaData* AliTPCDBTemp::CreateMetaObject(const char* objectClassName) +{ + AliCDBMetaData *md1= new AliCDBMetaData(); + md1->SetObjectClassName(objectClassName); + md1->SetResponsible("Haavard Helstrup"); + md1->SetBeamPeriod(2); + md1->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + md1->SetComment("Temperature"); + + return md1; +} +//______________________________________________________________________________________________ + +void AliTPCDBTemp::StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData) +{ + + AliCDBId id1(cdbPath, fFirstRun, fLastRun); + if (fStorLoc) fStorLoc->Put(object, id1, metaData); +} +//______________________________________________________________________________________________ + +void AliTPCDBTemp::Init(Int_t run){ + +// Int_t kLastRun=4000; + Long64_t longRun; + + SetFirstRun(run); + SetLastRun(run); + + InitDB(run); + fCalib = AliTPCcalibDB::Instance(); + longRun=run; + fCalib->SetRun(longRun); + fTemperature = fCalib->GetTemperature(); + +} +//______________________________________________________________________________________________ + +void AliTPCDBTemp::InitDB(Int_t run) +{ + // Data base generation + + char *CDBpath="local:///afs/cern.ch/alice/tpctest/Calib/"; + + fMetaData = CreateMetaObject("AliTPCSensorTempArray"); + AliCDBManager *man = AliCDBManager::Instance(); + man->SetDefaultStorage("local:///afs/cern.ch/alice/tpctest/AliRoot/HEAD"); + man->SetRun(run); + man->SetSpecificStorage("TPC/*/*","local:///afs/cern.ch/alice/tpctest/Calib"); + AliCDBEntry *config = man->Get("TPC/Config/Temperature"); + if (config) fConfTree = (TTree*)config->GetObject(); + fStorLoc = man->GetStorage(CDBpath); + if (!fStorLoc) return; +} +//_____________________________________________________________________________ +TMap* AliTPCDBTemp::SetGraphFile(const char *fname) +{ + // + // Read DCS maps from file given by fname + // + TFile file(fname); + TMap * map = (TMap*)file.Get("DCSMap"); + return map; +} +//______________________________________________________________________________________________ + +TClonesArray * AliTPCDBTemp::ReadList(const char *fname) { + // + // read values from ascii file + // + TTree* tree = new TTree("tempConf","tempConf"); + tree->ReadFile(fname,""); + TClonesArray *arr = AliTPCSensorTemp::ReadTree(tree); + return arr; +} + +//______________________________________________________________________________________________ + +TTree * AliTPCDBTemp::ReadListTree(const char *fname) { + // + // read values from ascii file + // + TTree* tree = new TTree("tempConf","tempConf"); + tree->ReadFile(fname,""); + TClonesArray *arr = AliTPCSensorTemp::ReadTree(tree); + arr->Delete(); + delete arr; + return tree; +} diff --git a/TPC/AliTPCDBTemp.h b/TPC/AliTPCDBTemp.h index 41bf7d34850..f3c3d76c1ab 100644 --- a/TPC/AliTPCDBTemp.h +++ b/TPC/AliTPCDBTemp.h @@ -24,14 +24,19 @@ #include "AliTPCSensorTempArray.h" #include "AliLog.h" -class AliTPCDBTemp { +class AliTPCDBTemp : public TObject { public: AliTPCDBTemp(); + AliTPCDBTemp(const AliTPCDBTemp& org); + ~AliTPCDBTemp(); + AliTPCDBTemp& operator= (const AliTPCDBTemp& org); + void Copy(TObject &c) const; void MakeCalib(const char *file, const char *fMap, const TTimeStamp& startTime, const TTimeStamp& endTime, Int_t run); + void MakeConfig(const char *file, Int_t firstRun, Int_t lastRun); AliCDBMetaData* CreateMetaObject(const char *objectClassName); void StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData); void Init(Int_t run); @@ -39,14 +44,21 @@ public: void SetFirstRun(Int_t frun){fFirstRun=frun;} void SetLastRun(Int_t lrun) {fLastRun=lrun;} TMap* SetGraphFile(const char* fname); + void SetConfTree(TTree* tree) {fConfTree=tree;} + TTree* GetConfTree() const {return fConfTree;} + static TClonesArray * ReadList(const char* fname); + static TTree * ReadListTree(const char* fname); private: - Int_t fFirstRun; - Int_t fLastRun; - AliTPCSensorTempArray *fTemperature; - AliCDBStorage *fStorLoc; - AliTPCcalibDB *fCalib; - AliCDBMetaData *fMetaData; + Int_t fFirstRun; // first run in validity period + Int_t fLastRun; // last run in validity period + AliTPCSensorTempArray *fTemperature; // array of temperature sensors + AliCDBStorage *fStorLoc; // pointer to CDB storage + AliTPCcalibDB *fCalib; // calibration object + AliCDBMetaData *fMetaData; // data base metadata + TTree *fConfTree; // configuration tree + + ClassDef(AliTPCDBTemp,1) }; #endif -- 2.43.0