CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
MaterialBudgetCategorizer Class Reference

#include <MaterialBudgetCategorizer.h>

Public Member Functions

const std::vector< float > & HGCall0fraction (std::string s)
 
const std::vector< float > & HGCalx0fraction (std::string s)
 
const std::vector< float > & l0fraction (std::string s)
 
int material (std::string s)
 
 MaterialBudgetCategorizer (std::string mode)
 
int volume (std::string s)
 
const std::vector< float > & x0fraction (std::string s)
 

Private Member Functions

void buildCategoryMap (std::string theMaterialFileName, std::map< std::string, std::vector< float > > &theMap)
 
void buildHGCalCategoryMap (std::string theMaterialFileName, std::map< std::string, std::vector< float > > &theMap)
 
void buildMaps ()
 

Private Attributes

std::map< std::string,
std::vector< float > > 
theHGCalL0Map
 
std::map< std::string,
std::vector< float > > 
theHGCalX0Map
 
std::map< std::string,
std::vector< float > > 
theL0Map
 
std::map< std::string, int > theMaterialMap
 
std::map< std::string, int > theVolumeMap
 
std::map< std::string,
std::vector< float > > 
theX0Map
 

Detailed Description

Definition at line 15 of file MaterialBudgetCategorizer.h.

Constructor & Destructor Documentation

MaterialBudgetCategorizer::MaterialBudgetCategorizer ( std::string  mode)

Definition at line 15 of file MaterialBudgetCategorizer.cc.

References buildCategoryMap(), buildHGCalCategoryMap(), edm::FileInPath::fullPath(), cuy::ii, AlCaHLTBitMon_QueryRunRegistry::string, theHGCalL0Map, theHGCalX0Map, theL0Map, theVolumeMap, and theX0Map.

15  {
16  //----- Build map volume name - volume index
17  G4LogicalVolumeStore* lvs = G4LogicalVolumeStore::GetInstance();
18  G4LogicalVolumeStore::iterator ite;
19  int ii = 0;
20  for (ite = lvs->begin(); ite != lvs->end(); ite++) {
21  theVolumeMap[(*ite)->GetName()] = ii++;
22  }
23 
24  if (mode.compare("Tracker") == 0) {
25  std::string theMaterialX0FileName = edm::FileInPath("Validation/Geometry/data/trackerMaterials.x0").fullPath();
26  buildCategoryMap(theMaterialX0FileName, theX0Map);
27  std::string theMaterialL0FileName = edm::FileInPath("Validation/Geometry/data/trackerMaterials.l0").fullPath();
28  buildCategoryMap(theMaterialL0FileName, theL0Map);
29  } else if (mode.compare("Mtd") == 0) {
30  std::string theMaterialX0FileName = edm::FileInPath("Validation/Geometry/data/mtdMaterials.x0").fullPath();
31  buildCategoryMap(theMaterialX0FileName, theX0Map);
32  std::string theMaterialL0FileName = edm::FileInPath("Validation/Geometry/data/mtdMaterials.l0").fullPath();
33  buildCategoryMap(theMaterialL0FileName, theL0Map);
34  } else if (mode.compare("HGCal") == 0) {
35  std::string thehgcalMaterialX0FileName = edm::FileInPath("Validation/Geometry/data/hgcalMaterials.x0").fullPath();
36  buildHGCalCategoryMap(thehgcalMaterialX0FileName, theHGCalX0Map);
37  std::string thehgcalMaterialL0FileName = edm::FileInPath("Validation/Geometry/data/hgcalMaterials.l0").fullPath();
38  buildHGCalCategoryMap(thehgcalMaterialL0FileName, theHGCalL0Map);
39  }
40 }
std::map< std::string, std::vector< float > > theHGCalX0Map
int ii
Definition: cuy.py:589
void buildCategoryMap(std::string theMaterialFileName, std::map< std::string, std::vector< float > > &theMap)
std::map< std::string, int > theVolumeMap
std::map< std::string, std::vector< float > > theHGCalL0Map
std::map< std::string, std::vector< float > > theX0Map
std::map< std::string, std::vector< float > > theL0Map
std::string fullPath() const
Definition: FileInPath.cc:161
void buildHGCalCategoryMap(std::string theMaterialFileName, std::map< std::string, std::vector< float > > &theMap)

Member Function Documentation

void MaterialBudgetCategorizer::buildCategoryMap ( std::string  theMaterialFileName,
std::map< std::string, std::vector< float > > &  theMap 
)
private

Definition at line 42 of file MaterialBudgetCategorizer.cc.

References cuy::col, Exception, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by MaterialBudgetCategorizer().

43  {
44  std::ifstream theMaterialFile(theMaterialFileName);
45 
46  if (!theMaterialFile)
47  cms::Exception("LogicError") << " File not found " << theMaterialFileName;
48 
49  float sup, sen, cab, col, ele, oth, air;
50  sup = sen = cab = col = ele = 0.;
51 
52  std::string materialName;
53 
54  while (theMaterialFile) {
55  theMaterialFile >> materialName;
56  theMaterialFile >> sup >> sen >> cab >> col >> ele;
57 
58  if (materialName[0] == '#') //Ignore comments
59  continue;
60 
61  oth = 0.000;
62  air = 0.000;
63  theMap[materialName].clear(); // clear before re-filling
64  theMap[materialName].push_back(sup); // sup
65  theMap[materialName].push_back(sen); // sen
66  theMap[materialName].push_back(cab); // cab
67  theMap[materialName].push_back(col); // col
68  theMap[materialName].push_back(ele); // ele
69  theMap[materialName].push_back(oth); // oth
70  theMap[materialName].push_back(air); // air
71  edm::LogInfo("MaterialBudget") << "MaterialBudgetCategorizer: Material " << materialName << " filled: "
72  << "\n\tSUP " << sup << "\n\tSEN " << sen << "\n\tCAB " << cab << "\n\tCOL " << col
73  << "\n\tELE " << ele << "\n\tOTH " << oth << "\n\tAIR " << air
74  << "\n\tAdd up to: " << sup + sen + cab + col + ele + oth + air;
75  }
76 }
Log< level::Info, false > LogInfo
int col
Definition: cuy.py:1009
void MaterialBudgetCategorizer::buildHGCalCategoryMap ( std::string  theMaterialFileName,
std::map< std::string, std::vector< float > > &  theMap 
)
private

Definition at line 78 of file MaterialBudgetCategorizer.cc.

References Exception, python.rootplot.root2matplotlib::replace(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by MaterialBudgetCategorizer().

79  {
80  std::ifstream theMaterialFile(theMaterialFileName);
81  if (!theMaterialFile)
82  cms::Exception("LogicError") << " File not found " << theMaterialFileName;
83 
84  // fill everything as "other"
85  float air, cables, copper, h_scintillator, lead, hgc_g10_fr4, silicon, stainlesssteel, wcu, oth, epoxy, kapton,
86  aluminium;
87  air = cables = copper = h_scintillator = lead = hgc_g10_fr4 = silicon = stainlesssteel = wcu = epoxy = kapton =
88  aluminium = 0.;
89 
90  std::string materialName;
91  while (theMaterialFile) {
92  theMaterialFile >> materialName;
93  theMaterialFile >> air >> cables >> copper >> h_scintillator >> lead >> hgc_g10_fr4 >> silicon >> stainlesssteel >>
94  wcu >> epoxy >> kapton >> aluminium;
95  // Skip comments
96  if (materialName[0] == '#')
97  continue;
98  // Substitute '*' with spaces
99  std::replace(materialName.begin(), materialName.end(), '*', ' ');
100  oth = 0.000;
101  theMap[materialName].clear(); // clear before re-filling
102  theMap[materialName].push_back(air); // air
103  theMap[materialName].push_back(cables); // cables
104  theMap[materialName].push_back(copper); // copper
105  theMap[materialName].push_back(h_scintillator); // h_scintillator
106  theMap[materialName].push_back(lead); // lead
107  theMap[materialName].push_back(hgc_g10_fr4); // hgc_g10_fr4
108  theMap[materialName].push_back(silicon); // silicon
109  theMap[materialName].push_back(stainlesssteel); // stainlesssteel
110  theMap[materialName].push_back(wcu); // wcu
111  theMap[materialName].push_back(oth); // oth
112  theMap[materialName].push_back(epoxy); // epoxy
113  theMap[materialName].push_back(kapton); // kapton
114  theMap[materialName].push_back(aluminium); // aluminium
115  edm::LogInfo("MaterialBudget") << "MaterialBudgetCategorizer: material " << materialName << " filled " << std::endl
116  << "\tair " << air << std::endl
117  << "\tcables " << cables << std::endl
118  << "\tcopper " << copper << std::endl
119  << "\th_scintillator " << h_scintillator << std::endl
120  << "\tlead " << lead << std::endl
121  << "\thgc_g10_fr4 " << hgc_g10_fr4 << std::endl
122  << "\tsilicon " << silicon << std::endl
123  << "\tstainlesssteel " << stainlesssteel << std::endl
124  << "\twcu " << wcu << std::endl
125  << "\tepoxy " << epoxy << std::endl
126  << "\tkapton " << kapton << std::endl
127  << "\taluminium " << aluminium << std::endl
128  << "\tOTH " << oth;
129  }
130 }
Log< level::Info, false > LogInfo
void MaterialBudgetCategorizer::buildMaps ( )
private
const std::vector<float>& MaterialBudgetCategorizer::HGCall0fraction ( std::string  s)
inline

Definition at line 27 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theHGCalL0Map.

27 { return theHGCalL0Map[s]; }
std::map< std::string, std::vector< float > > theHGCalL0Map
const std::vector<float>& MaterialBudgetCategorizer::HGCalx0fraction ( std::string  s)
inline

Definition at line 26 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theHGCalX0Map.

26 { return theHGCalX0Map[s]; }
std::map< std::string, std::vector< float > > theHGCalX0Map
const std::vector<float>& MaterialBudgetCategorizer::l0fraction ( std::string  s)
inline

Definition at line 23 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theL0Map.

23 { return theL0Map[s]; }
std::map< std::string, std::vector< float > > theL0Map
int MaterialBudgetCategorizer::material ( std::string  s)
inline

Definition at line 20 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theMaterialMap.

20 { return theMaterialMap[s]; }
std::map< std::string, int > theMaterialMap
int MaterialBudgetCategorizer::volume ( std::string  s)
inline

Definition at line 19 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theVolumeMap.

19 { return theVolumeMap[s]; }
std::map< std::string, int > theVolumeMap
const std::vector<float>& MaterialBudgetCategorizer::x0fraction ( std::string  s)
inline

Definition at line 22 of file MaterialBudgetCategorizer.h.

References alignCSCRings::s, and theX0Map.

22 { return theX0Map[s]; }
std::map< std::string, std::vector< float > > theX0Map

Member Data Documentation

std::map<std::string, std::vector<float> > MaterialBudgetCategorizer::theHGCalL0Map
private

Definition at line 40 of file MaterialBudgetCategorizer.h.

Referenced by HGCall0fraction(), and MaterialBudgetCategorizer().

std::map<std::string, std::vector<float> > MaterialBudgetCategorizer::theHGCalX0Map
private

Definition at line 39 of file MaterialBudgetCategorizer.h.

Referenced by HGCalx0fraction(), and MaterialBudgetCategorizer().

std::map<std::string, std::vector<float> > MaterialBudgetCategorizer::theL0Map
private

Definition at line 36 of file MaterialBudgetCategorizer.h.

Referenced by l0fraction(), and MaterialBudgetCategorizer().

std::map<std::string, int> MaterialBudgetCategorizer::theMaterialMap
private

Definition at line 33 of file MaterialBudgetCategorizer.h.

Referenced by material().

std::map<std::string, int> MaterialBudgetCategorizer::theVolumeMap
private

Definition at line 33 of file MaterialBudgetCategorizer.h.

Referenced by MaterialBudgetCategorizer(), and volume().

std::map<std::string, std::vector<float> > MaterialBudgetCategorizer::theX0Map
private

Definition at line 35 of file MaterialBudgetCategorizer.h.

Referenced by MaterialBudgetCategorizer(), and x0fraction().