diff --git a/Validation/Geometry/interface/MaterialBudgetTree.h b/Validation/Geometry/interface/MaterialBudgetTree.h index 8b2f4ec6f5e11..a0b1ea0111753 100644 --- a/Validation/Geometry/interface/MaterialBudgetTree.h +++ b/Validation/Geometry/interface/MaterialBudgetTree.h @@ -21,6 +21,7 @@ class MaterialBudgetTree : public MaterialBudgetFormat { void book(); // user booking std::unique_ptr theFile; std::unique_ptr theTree; + std::string fname; static const int MAXSTEPS = 10000; diff --git a/Validation/Geometry/src/MaterialBudgetTree.cc b/Validation/Geometry/src/MaterialBudgetTree.cc index f52ec12e0d91c..840477d38efcb 100644 --- a/Validation/Geometry/src/MaterialBudgetTree.cc +++ b/Validation/Geometry/src/MaterialBudgetTree.cc @@ -3,10 +3,9 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" -MaterialBudgetTree::MaterialBudgetTree(std::shared_ptr data, const std::string& filename) +MaterialBudgetTree::MaterialBudgetTree(std::shared_ptr data, const std::string &filename) : MaterialBudgetFormat(data) { - theFile = std::make_unique(filename.c_str(), "RECREATE"); - theFile->cd(); + fname = filename; book(); } @@ -112,8 +111,6 @@ void MaterialBudgetTree::fillPerStep() {} void MaterialBudgetTree::fillEndTrack() { t_MB = theData->getTotalMB(); t_IL = theData->getTotalIL(); - // t_Eta = theData->getEta(); - // t_Phi = theData->getPhi(); t_ParticleID = theData->getID(); t_ParticlePt = theData->getPt(); @@ -204,16 +201,28 @@ void MaterialBudgetTree::fillEndTrack() { } } - theTree->Fill(); + if (theData->getNumberOfSteps() != 0) { + Int_t ssize = theTree->Fill(); + edm::LogInfo("MaterialBudget") << "MaterialBudgetTree: Filling Tree " << ssize << " bytes"; + } else { + edm::LogWarning("MaterialBudget") << "MaterialBudgetTree: Event with 0 steps not recorded"; + } } void MaterialBudgetTree::endOfRun() { // Prefered method to include any instruction // once all the tracks are done - edm::LogInfo("MaterialBudget") << "MaterialBudgetTree Writing TTree to ROOT file"; + TFile *outFile = new TFile(fname.c_str(), "RECREATE"); + outFile->mkdir("TEST"); + + if (theTree) { + TTree *t1 = theTree->CloneTree(); + t1->Write(); + edm::LogWarning("MaterialBudget") << "TTree Written " << t1; + } else { + edm::LogError("MaterialBudget") << "Material Budget Tree: Tree Pointer Null"; + } - theFile->cd(); - theTree->Write(); - theFile->Close(); + delete outFile; } diff --git a/Validation/Geometry/test/runP_Tracker.py b/Validation/Geometry/test/runP_Tracker.py index 22b22ce290bdb..d702ff04ec854 100644 --- a/Validation/Geometry/test/runP_Tracker.py +++ b/Validation/Geometry/test/runP_Tracker.py @@ -55,7 +55,7 @@ process.MessageLogger = cms.Service( "MessageLogger", destinations = cms.untracked.vstring('info'), - categories = cms.untracked.vstring('logMsg'), + categories = cms.untracked.vstring(['logMsg','MaterialBudget']), info = cms.untracked.PSet( threshold = cms.untracked.string('INFO'), filename = cms.untracked.string('Log_%s_%s' % (options.label,options.geom)), @@ -126,14 +126,14 @@ def _adaptToRun2(det): MaterialBudgetAction = cms.PSet( HistosFile = cms.string('matbdg_%s_%s.root' % (options.label, options.geom)), - AllStepsToTree = cms.bool(True), + AllStepsToTree = cms.bool(False), HistogramList = cms.string('Tracker'), SelectedVolumes = cms.vstring(_components), - TreeFile = cms.string('None'), ## is NOT requested - + TreeFile = cms.string('matbdg_tree_%s_%s.root' % (options.label, + options.geom)), StopAfterProcess = cms.string('None'), -# TextFile = cms.string("matbdg_Tracker.txt") - TextFile = cms.string('None') + TextFile = cms.string('matbdg_%s_%s.txt' % (options.label, + options.geom)) ) ))