/////////////////////////////////////////////////////////////////////////// // // // Authors: // Julian Book // // /////////////////////////////////////////////////////////////////////////// #include #include #include #include #include // #include "TParamater.h" // #include "TParamater.h" #include #include #include #include "PairAnalysisMetaData.h" ClassImp(PairAnalysisMetaData) PairAnalysisMetaData::PairAnalysisMetaData() : // TCollection(), TNamed("PairAnalysisMetaData","PairAnalysis MetaData Container"), fMetaList() { // // Default constructor // fMetaList.SetOwner(kTRUE); fMetaList.SetName("PairAnalysis_MetaData"); } //_____________________________________________________________________________ PairAnalysisMetaData::PairAnalysisMetaData(const char* name, const char* title) : // TCollection(), TNamed(name, title), fMetaList() { // // TNamed constructor // fMetaList.SetOwner(kTRUE); fMetaList.SetName(name); } //_____________________________________________________________________________ PairAnalysisMetaData::~PairAnalysisMetaData() { // // Destructor // fMetaList.Clear(); // if (fList) fList->Clear(); } //_____________________________________________________________________________ void PairAnalysisMetaData::Init() { // // Init meta data objects and add to list // TNamed *pSetup = new TNamed("setup", "undefined"); // pSetup->SetTitle(gSystem->Getenv("USER")); //e.g. sis100 fMetaList.Add(pSetup); TNamed *pSystem = new TNamed("system", "Au+Au"); // pSystem->SetTitle(gSystem->Getenv("USER")); fMetaList.Add(pSystem); TNamed *pProduction = new TNamed("production", "SIS"); // pProduction->SetTitle(gProduction->Getenv("USER")); fMetaList.Add(pProduction); TParameter *pBeamEnergy = new TParameter("beamenergy", 4.107); pBeamEnergy->SetBit(TParameter::kIsConst); fMetaList.Add(pBeamEnergy); TParameter *pEvents = new TParameter("events", 0); pEvents->SetMergeMode('+'); fMetaList.Add(pEvents); TParameter *pMC = new TParameter("mc", kTRUE); pMC->SetBit(TParameter::kIsConst); fMetaList.Add(pMC); TNamed *pTrainOp = new TNamed("operator", "undefined"); pTrainOp->SetTitle(gSystem->Getenv("USER")); fMetaList.Add(pTrainOp); // TNamed *pRootVers = new TNamed("root", "XXX"); // pRootVers->SetTitle(gROOT->GetVersion()); TParameter *pRootVers = new TParameter("root",gROOT->GetVersionInt()); pRootVers->SetBit(TParameter::kIsConst); fMetaList.Add(pRootVers); gSystem->Setenv("CBMROOT_SVN_REVISION",gSystem->GetFromPipe("svnversion $VMCWORKDIR")); TString rev=gSystem->Getenv("CBMROOT_SVN_REVISION"); TParameter *pCbmRev = new TParameter("cbmroot", 0); pCbmRev->SetBit(TParameter::kIsConst); pCbmRev->SetVal(rev.Atoi()); fMetaList.Add(pCbmRev); TDatime dat; TParameter *pDate = new TParameter("date", dat.GetDate()); pDate->SetBit(TParameter::kMin); fMetaList.Add(pDate); TParameter *pTime = new TParameter("time", dat.GetTime()); pTime->SetBit(TParameter::kMin); fMetaList.Add(pTime); } //_____________________________________________________________________________ void PairAnalysisMetaData::SetMetaData(TList &list, Bool_t setOwner/*=kTRUE*/) { // // set histogram classes and histograms to this instance. It will take onwnership! // ResetMetaData(); TString name(GetName()); if (name == "PairAnalysisMetaData") SetName(list.GetName()); TIter next(&list); TObject *o; while ( (o=next()) ){ fMetaList.Add(o); } if (setOwner){ list.SetOwner(kFALSE); fMetaList.SetOwner(kTRUE); } else { fMetaList.SetOwner(kFALSE); } } void PairAnalysisMetaData::FillMeta(const char *name, Double_t val) { // // fill meta data of doubles // TParameter *par = dynamic_cast *>(fMetaList.FindObject(name)); par->SetVal(val); } void PairAnalysisMetaData::FillMeta(const char *name, Int_t val) { // // fill meta data of integers // TParameter *par = dynamic_cast *>(fMetaList.FindObject(name)); par->SetVal(val); } void PairAnalysisMetaData::FillMeta(const char *name, const char *val) { // // fill meta data of strings // TNamed *par = dynamic_cast(fMetaList.FindObject(name)); par->SetTitle(val); } void PairAnalysisMetaData::DrawSame(const Option_t* opt) { // // draw meta data into current pad // if(fMetaList.GetEntries()<1) return; TPaveText *pt = new TPaveText(gPad->GetLeftMargin(), 1.-gPad->GetTopMargin(), 1.-gPad->GetRightMargin(), 0.99,"NDCNB"); pt->SetName("meta"); pt->SetTextAlign(kHAlignLeft+kVAlignCenter); pt->SetMargin(0.01); //default 0.05 TString line="CBM"; TString tmp=""; // system TNamed *par = dynamic_cast(fMetaList.FindObject("system")); if(par) tmp=par->GetTitle(); if(!tmp.IsNull()) line+=" " + tmp; // beamenergy TParameter *parD = dynamic_cast *>(fMetaList.FindObject("beamenergy")); if(parD) tmp=Form("#sqrt{#it{s}_{NN}} = %.2f GeV",parD->GetVal()); if(!tmp.IsNull()) line+=" " + tmp; // simulation (only if true) TParameter *parB = dynamic_cast *>(fMetaList.FindObject("mc")); if(parB && parB->GetVal()) { tmp=Form(", Simulation"); line+=tmp; } pt->AddText(line.Data()); // pt->Print(); pt->Draw(); }