CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
mkfit::TrackerInfo Class Reference

#include <TrackerInfo.h>

Classes

struct  Material
 

Public Types

enum  EtaRegion {
  Reg_Begin = 0, Reg_Endcap_Neg = 0, Reg_Transition_Neg, Reg_Barrel,
  Reg_Transition_Pos, Reg_Endcap_Pos, Reg_End, Reg_Count = Reg_End
}
 

Public Member Functions

const std::vector< int > & barrel_layers () const
 
bool check_bins (int bz, int br) const
 
void create_layers (int n_brl, int n_ec_pos, int n_ec_neg)
 
void create_material (int nBinZ, float rngZ, int nBinR, float rngR)
 
const std::vector< int > & endcap_neg_layers () const
 
const std::vector< int > & endcap_pos_layers () const
 
const LayerInfolayer (int l) const
 
LayerInfolayer_nc (int l)
 
int mat_bin_r (float r) const
 
int mat_bin_z (float z) const
 
int mat_nbins_r () const
 
int mat_nbins_z () const
 
float mat_range_r () const
 
float mat_range_z () const
 
float material_bbxi (int binZ, int binR) const
 
float & material_bbxi (int binZ, int binR)
 
Material material_checked (float z, float r) const
 
float material_radl (int binZ, int binR) const
 
float & material_radl (int binZ, int binR)
 
int n_layers () const
 
int n_total_modules () const
 
LayerInfonew_barrel_layer ()
 
LayerInfonew_ecap_neg_layer ()
 
LayerInfonew_ecap_pos_layer ()
 
const LayerInfooperator[] (int l) const
 
const LayerInfoouter_barrel_layer () const
 
void print_tracker (int level, int precision=3) const
 
const PropagationConfigprop_config () const
 
PropagationConfigprop_config_nc ()
 
void read_bin_file (const std::string &fname)
 
void reserve_layers (int n_brl, int n_ec_pos, int n_ec_neg)
 
void write_bin_file (const std::string &fname) const
 

Private Member Functions

int new_layer (LayerInfo::LayerType_e type)
 

Private Attributes

std::vector< int > m_barrel
 
std::vector< int > m_ecap_neg
 
std::vector< int > m_ecap_pos
 
std::vector< LayerInfom_layers
 
float m_mat_fac_r
 
float m_mat_fac_z
 
float m_mat_range_r
 
float m_mat_range_z
 
rectvec< Materialm_mat_vec
 
PropagationConfig m_prop_config
 

Detailed Description

Definition at line 218 of file TrackerInfo.h.

Member Enumeration Documentation

◆ EtaRegion

Enumerator
Reg_Begin 
Reg_Endcap_Neg 
Reg_Transition_Neg 
Reg_Barrel 
Reg_Transition_Pos 
Reg_Endcap_Pos 
Reg_End 
Reg_Count 

Definition at line 220 of file TrackerInfo.h.

Member Function Documentation

◆ barrel_layers()

const std::vector<int>& mkfit::TrackerInfo::barrel_layers ( ) const
inline

Definition at line 250 of file TrackerInfo.h.

References m_barrel.

250 { return m_barrel; }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285

◆ check_bins()

bool mkfit::TrackerInfo::check_bins ( int  bz,
int  br 
) const
inline

Definition at line 268 of file TrackerInfo.h.

References beamvalidation::br, and m_mat_vec.

Referenced by material_checked().

268 { return m_mat_vec.check_idcs(bz, br); }
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ create_layers()

void mkfit::TrackerInfo::create_layers ( int  n_brl,
int  n_ec_pos,
int  n_ec_neg 
)

Definition at line 77 of file TrackerInfo.cc.

References mps_fire::i, new_barrel_layer(), new_ecap_neg_layer(), new_ecap_pos_layer(), and reserve_layers().

77  {
78  reserve_layers(n_brl, n_ec_pos, n_ec_neg);
79  for (int i = 0; i < n_brl; ++i)
81  for (int i = 0; i < n_ec_pos; ++i)
83  for (int i = 0; i < n_ec_neg; ++i)
85  }
LayerInfo & new_barrel_layer()
Definition: TrackerInfo.cc:93
LayerInfo & new_ecap_neg_layer()
Definition: TrackerInfo.cc:103
LayerInfo & new_ecap_pos_layer()
Definition: TrackerInfo.cc:98
void reserve_layers(int n_brl, int n_ec_pos, int n_ec_neg)
Definition: TrackerInfo.cc:70

◆ create_material()

void mkfit::TrackerInfo::create_material ( int  nBinZ,
float  rngZ,
int  nBinR,
float  rngR 
)

◆ endcap_neg_layers()

const std::vector<int>& mkfit::TrackerInfo::endcap_neg_layers ( ) const
inline

Definition at line 252 of file TrackerInfo.h.

References m_ecap_neg.

252 { return m_ecap_neg; }
std::vector< int > m_ecap_neg
Definition: TrackerInfo.h:287

◆ endcap_pos_layers()

const std::vector<int>& mkfit::TrackerInfo::endcap_pos_layers ( ) const
inline

Definition at line 251 of file TrackerInfo.h.

References m_ecap_pos.

251 { return m_ecap_pos; }
std::vector< int > m_ecap_pos
Definition: TrackerInfo.h:286

◆ layer()

const LayerInfo& mkfit::TrackerInfo::layer ( int  l) const
inline

◆ layer_nc()

LayerInfo& mkfit::TrackerInfo::layer_nc ( int  l)
inline

◆ mat_bin_r()

int mkfit::TrackerInfo::mat_bin_r ( float  r) const
inline

Definition at line 267 of file TrackerInfo.h.

References m_mat_fac_r.

Referenced by MkFitGeometryESProducer::fillLayers(), and material_checked().

267 { return r * m_mat_fac_r; }

◆ mat_bin_z()

int mkfit::TrackerInfo::mat_bin_z ( float  z) const
inline

◆ mat_nbins_r()

int mkfit::TrackerInfo::mat_nbins_r ( ) const
inline

◆ mat_nbins_z()

int mkfit::TrackerInfo::mat_nbins_z ( ) const
inline

◆ mat_range_r()

float mkfit::TrackerInfo::mat_range_r ( ) const
inline

Definition at line 265 of file TrackerInfo.h.

References m_mat_range_r.

Referenced by MkFitGeometryESProducer::fillShapeAndPlacement().

265 { return m_mat_range_r; }

◆ mat_range_z()

float mkfit::TrackerInfo::mat_range_z ( ) const
inline

Definition at line 264 of file TrackerInfo.h.

References m_mat_range_z.

Referenced by MkFitGeometryESProducer::fillShapeAndPlacement().

264 { return m_mat_range_z; }

◆ material_bbxi() [1/2]

float mkfit::TrackerInfo::material_bbxi ( int  binZ,
int  binR 
) const
inline

Definition at line 270 of file TrackerInfo.h.

References m_mat_vec.

Referenced by MkFitGeometryESProducer::aggregateMaterialInfo(), and MkFitGeometryESProducer::fillLayers().

270 { return m_mat_vec(binZ, binR).bbxi; }
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ material_bbxi() [2/2]

float& mkfit::TrackerInfo::material_bbxi ( int  binZ,
int  binR 
)
inline

Definition at line 272 of file TrackerInfo.h.

References m_mat_vec.

272 { return m_mat_vec(binZ, binR).bbxi; }
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ material_checked()

Material mkfit::TrackerInfo::material_checked ( float  z,
float  r 
) const
inline

Definition at line 275 of file TrackerInfo.h.

References check_bins(), m_mat_vec, mat_bin_r(), mat_bin_z(), and g4SimHits_cfi::Material.

Referenced by mkfit::propagateHelixToPlaneMPlex(), mkfit::propagateHelixToRMPlex(), and mkfit::propagateHelixToZMPlex().

275  {
276  const int zbin = mat_bin_z(z), rbin = mat_bin_r(r);
277  return check_bins(zbin, rbin) ? m_mat_vec(zbin, rbin) : Material();
278  }
int mat_bin_z(float z) const
Definition: TrackerInfo.h:266
bool check_bins(int bz, int br) const
Definition: TrackerInfo.h:268
int mat_bin_r(float r) const
Definition: TrackerInfo.h:267
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ material_radl() [1/2]

float mkfit::TrackerInfo::material_radl ( int  binZ,
int  binR 
) const
inline

Definition at line 271 of file TrackerInfo.h.

References m_mat_vec.

Referenced by MkFitGeometryESProducer::aggregateMaterialInfo(), and MkFitGeometryESProducer::fillLayers().

271 { return m_mat_vec(binZ, binR).radl; }
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ material_radl() [2/2]

float& mkfit::TrackerInfo::material_radl ( int  binZ,
int  binR 
)
inline

Definition at line 273 of file TrackerInfo.h.

References m_mat_vec.

273 { return m_mat_vec(binZ, binR).radl; }
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291

◆ n_layers()

int mkfit::TrackerInfo::n_layers ( ) const
inline

Definition at line 240 of file TrackerInfo.h.

References m_layers.

Referenced by mkfit::EventOfHits::EventOfHits(), MkFitGeometryESProducer::fillLayers(), main(), print_tracker(), and write_bin_file().

240 { return m_layers.size(); }
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ n_total_modules()

int mkfit::TrackerInfo::n_total_modules ( ) const

Definition at line 108 of file TrackerInfo.cc.

References MainPageGenerator::l, and m_layers.

108  {
109  int nm = 0;
110  for (auto& l : m_layers)
111  nm += l.n_modules();
112  return nm;
113  }
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ new_barrel_layer()

LayerInfo & mkfit::TrackerInfo::new_barrel_layer ( )

Definition at line 93 of file TrackerInfo.cc.

References mkfit::LayerInfo::Barrel, m_barrel, m_layers, and new_layer().

Referenced by create_layers().

93  {
95  return m_layers.back();
96  }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285
int new_layer(LayerInfo::LayerType_e type)
Definition: TrackerInfo.cc:87
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ new_ecap_neg_layer()

LayerInfo & mkfit::TrackerInfo::new_ecap_neg_layer ( )

Definition at line 103 of file TrackerInfo.cc.

References mkfit::LayerInfo::EndCapNeg, m_ecap_neg, m_layers, and new_layer().

Referenced by create_layers().

103  {
105  return m_layers.back();
106  }
std::vector< int > m_ecap_neg
Definition: TrackerInfo.h:287
int new_layer(LayerInfo::LayerType_e type)
Definition: TrackerInfo.cc:87
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ new_ecap_pos_layer()

LayerInfo & mkfit::TrackerInfo::new_ecap_pos_layer ( )

Definition at line 98 of file TrackerInfo.cc.

References mkfit::LayerInfo::EndCapPos, m_ecap_pos, m_layers, and new_layer().

Referenced by create_layers().

98  {
100  return m_layers.back();
101  }
int new_layer(LayerInfo::LayerType_e type)
Definition: TrackerInfo.cc:87
std::vector< int > m_ecap_pos
Definition: TrackerInfo.h:286
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ new_layer()

int mkfit::TrackerInfo::new_layer ( LayerInfo::LayerType_e  type)
private

◆ operator[]()

const LayerInfo& mkfit::TrackerInfo::operator[] ( int  l) const
inline

Definition at line 246 of file TrackerInfo.h.

References MainPageGenerator::l, and m_layers.

246 { return m_layers[l]; }
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ outer_barrel_layer()

const LayerInfo& mkfit::TrackerInfo::outer_barrel_layer ( ) const
inline

Definition at line 248 of file TrackerInfo.h.

References m_barrel, and m_layers.

248 { return m_layers[m_barrel.back()]; }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ print_tracker()

void mkfit::TrackerInfo::print_tracker ( int  level,
int  precision = 3 
) const

Definition at line 273 of file TrackerInfo.cc.

References mkfit::ModuleInfo::detid, mkfit::ModuleShape::dx1, mkfit::ModuleShape::dx2, mkfit::ModuleShape::dy, mkfit::ModuleShape::dz, mps_fire::i, dqmiolumiharvest::j, layer(), gammaJetAnalysis_CHSJECs_cff::level, mkfit::LayerInfo::module_info(), mkfit::LayerInfo::module_shape(), n_layers(), mkfit::LayerInfo::n_modules(), mkfit::LayerInfo::n_shapes(), AlCaHLTBitMon_ParallelJobs::p, mkfit::ModuleInfo::pos, ALCARECOEcalPhiSym_cff::precision, mkfit::LayerInfo::print_layer(), mkfit::ModuleInfo::shapeid, w(), x, mkfit::ModuleInfo::xdir, and mkfit::ModuleInfo::zdir.

273  {
274  // clang-format off
275  if (level > 0) {
276  for (int i = 0; i < n_layers(); ++i) {
277  const LayerInfo& li = layer(i);
278  li.print_layer();
279  if (level > 1) {
280  printf(" Detailed module list N=%d, N_shapes=%d\n", li.n_modules(), li.n_shapes());
281  for (int j = 0; j < li.n_shapes(); ++j) {
282  const ModuleShape &ms = li.module_shape(j);
283  const int w = precision + 1;
284  printf(" Shape id=%u: dx1=%.*f, dx2=%.*f, dy=%.*f, dz=%.*f\n",
285  j, w, ms.dx1, w, ms.dx2, w, ms.dy, w, ms.dz);
286  }
287  for (int j = 0; j < li.n_modules(); ++j) {
288  const ModuleInfo& mi = li.module_info(j);
289  auto* p = mi.pos.Array();
290  auto* z = mi.zdir.Array();
291  auto* x = mi.xdir.Array();
292  const int w = precision;
293  printf(" Module id=%u: detid=0x%x shapeid=%u pos=%.*f,%.*f,%.*f, "
294  "norm=%.*f,%.*f,%.*f, phi=%.*f,%.*f,%.*f\n",
295  j, mi.detid, mi.shapeid, w, p[0], w, p[1], w, p[2],
296  w, z[0], w, z[1], w, z[2], w, x[0], w, x[1], w, x[2]);
297  }
298  printf("\n");
299  }
300  }
301  }
302  // clang-format on
303  }
T w() const
int n_layers() const
Definition: TrackerInfo.h:240
const LayerInfo & layer(int l) const
Definition: TrackerInfo.h:241
float x

◆ prop_config()

const PropagationConfig& mkfit::TrackerInfo::prop_config ( ) const
inline

◆ prop_config_nc()

PropagationConfig& mkfit::TrackerInfo::prop_config_nc ( )
inline

Definition at line 255 of file TrackerInfo.h.

References m_prop_config.

255 { return m_prop_config; }
PropagationConfig m_prop_config
Definition: TrackerInfo.h:293

◆ read_bin_file()

void mkfit::TrackerInfo::read_bin_file ( const std::string &  fname)

Definition at line 215 of file TrackerInfo.cc.

References alignmentValidation::fname, personalPlayback::fp, MainPageGenerator::l, visualization-live-secondInstance_cfg::m, m_barrel, mkfit::LayerInfo::m_detid2sid, m_ecap_neg, m_ecap_pos, m_layers, m_mat_range_z, m_mat_vec, mkfit::LayerInfo::m_modules, mkfit::LayerInfo::m_shapes, and submitPVResolutionJobs::stderr.

Referenced by mkfit::execTrackerInfoCreatorPlugin(), and main().

215  {
216  FILE* fp = fopen(fname.c_str(), "r");
217  if (!fp) {
218  fprintf(stderr,
219  "TrackerInfo::read_bin_file error opening file '%s', errno=%d: '%s'\n",
220  fname.c_str(),
221  errno,
222  strerror(errno));
223  throw std::runtime_error("Failed opening file in TrackerInfo::read_bin_file");
224  }
225  GeomFileHeader fh;
226  fread(&fh, sizeof(GeomFileHeader), 1, fp);
227 
228  if (fh.f_magic != GeomFileHeader::s_magic) {
229  fprintf(stderr, "Incompatible input file (wrong magick).\n");
230  throw std::runtime_error("Filed opening file in TrackerInfo::read_bin_file");
231  }
232  if (fh.f_format_version != GeomFileHeader::s_version) {
233  fprintf(stderr,
234  "Unsupported file version %d. Supported version is %d.\n",
235  fh.f_format_version,
236  GeomFileHeader::s_version);
237  throw std::runtime_error("Unsupported file version in TrackerInfo::read_bin_file");
238  }
239  assert_sizeof_match(fh.f_sizeof_trackerinfo, sizeof(TrackerInfo), "TrackerInfo");
240  assert_sizeof_match(fh.f_sizeof_layerinfo, sizeof(LayerInfo), "LayerInfo");
241  assert_sizeof_match(fh.f_sizeof_moduleinfo, sizeof(ModuleInfo), "ModuleInfo");
242  assert_sizeof_match(fh.f_sizeof_moduleshape, sizeof(ModuleShape), "ModuleShape");
243 
244  printf("Opened TrackerInfoGeom file '%s', format version %d, n_layers %d\n",
245  fname.c_str(),
246  fh.f_format_version,
247  fh.f_n_layers);
248 
249  read_std_vec(fp, m_layers, (int)offsetof(LayerInfo, m_final_member_for_streaming));
250  read_std_vec(fp, m_barrel);
251  read_std_vec(fp, m_ecap_pos);
252  read_std_vec(fp, m_ecap_neg);
253 
254  for (int l = 0; l < fh.f_n_layers; ++l) {
255  LayerInfo& li = m_layers[l];
256  int nm = read_std_vec(fp, li.m_modules);
257 
258  li.m_detid2sid.clear();
259  for (int m = 0; m < nm; ++m) {
260  li.m_detid2sid.insert({li.m_modules[m].detid, m});
261  }
262 
263  read_std_vec(fp, li.m_shapes);
264  }
265 
266  fread(&m_mat_range_z, 4 * sizeof(float), 1, fp);
267  fread(&m_mat_vec, 2 * sizeof(int), 1, fp);
268  read_std_vec(fp, m_mat_vec.vector());
269 
270  fclose(fp);
271  }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285
std::vector< int > m_ecap_neg
Definition: TrackerInfo.h:287
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291
std::vector< int > m_ecap_pos
Definition: TrackerInfo.h:286
string fname
main script
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ reserve_layers()

void mkfit::TrackerInfo::reserve_layers ( int  n_brl,
int  n_ec_pos,
int  n_ec_neg 
)

Definition at line 70 of file TrackerInfo.cc.

References m_barrel, m_ecap_neg, m_ecap_pos, and m_layers.

Referenced by create_layers().

70  {
71  m_layers.reserve(n_brl + n_ec_pos + n_ec_neg);
72  m_barrel.reserve(n_brl);
73  m_ecap_pos.reserve(n_ec_pos);
74  m_ecap_neg.reserve(n_ec_neg);
75  }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285
std::vector< int > m_ecap_neg
Definition: TrackerInfo.h:287
std::vector< int > m_ecap_pos
Definition: TrackerInfo.h:286
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

◆ write_bin_file()

void mkfit::TrackerInfo::write_bin_file ( const std::string &  fname) const

Definition at line 184 of file TrackerInfo.cc.

References alignmentValidation::fname, personalPlayback::fp, MainPageGenerator::l, m_barrel, m_ecap_neg, m_ecap_pos, m_layers, m_mat_range_z, m_mat_vec, n_layers(), and submitPVResolutionJobs::stderr.

184  {
185  FILE* fp = fopen(fname.c_str(), "w");
186  if (!fp) {
187  fprintf(stderr,
188  "TrackerInfo::write_bin_file error opening file '%s', errno=%d: '%s'",
189  fname.c_str(),
190  errno,
191  strerror(errno));
192  throw std::runtime_error("Filed opening file in TrackerInfo::write_bin_file");
193  }
194  GeomFileHeader fh;
195  fh.f_n_layers = n_layers();
196  fwrite(&fh, sizeof(GeomFileHeader), 1, fp);
197 
198  write_std_vec(fp, m_layers, (int)offsetof(LayerInfo, m_final_member_for_streaming));
199  write_std_vec(fp, m_barrel);
200  write_std_vec(fp, m_ecap_pos);
201  write_std_vec(fp, m_ecap_neg);
202 
203  for (int l = 0; l < fh.f_n_layers; ++l) {
204  write_std_vec(fp, m_layers[l].m_modules);
205  write_std_vec(fp, m_layers[l].m_shapes);
206  }
207 
208  fwrite(&m_mat_range_z, 4 * sizeof(float), 1, fp);
209  fwrite(&m_mat_vec, 2 * sizeof(int), 1, fp);
210  write_std_vec(fp, m_mat_vec.vector());
211 
212  fclose(fp);
213  }
std::vector< int > m_barrel
Definition: TrackerInfo.h:285
std::vector< int > m_ecap_neg
Definition: TrackerInfo.h:287
int n_layers() const
Definition: TrackerInfo.h:240
rectvec< Material > m_mat_vec
Definition: TrackerInfo.h:291
std::vector< int > m_ecap_pos
Definition: TrackerInfo.h:286
string fname
main script
std::vector< LayerInfo > m_layers
Definition: TrackerInfo.h:283

Member Data Documentation

◆ m_barrel

std::vector<int> mkfit::TrackerInfo::m_barrel
private

◆ m_ecap_neg

std::vector<int> mkfit::TrackerInfo::m_ecap_neg
private

◆ m_ecap_pos

std::vector<int> mkfit::TrackerInfo::m_ecap_pos
private

◆ m_layers

std::vector<LayerInfo> mkfit::TrackerInfo::m_layers
private

◆ m_mat_fac_r

float mkfit::TrackerInfo::m_mat_fac_r
private

Definition at line 290 of file TrackerInfo.h.

Referenced by create_material(), and mat_bin_r().

◆ m_mat_fac_z

float mkfit::TrackerInfo::m_mat_fac_z
private

Definition at line 290 of file TrackerInfo.h.

Referenced by create_material(), and mat_bin_z().

◆ m_mat_range_r

float mkfit::TrackerInfo::m_mat_range_r
private

Definition at line 289 of file TrackerInfo.h.

Referenced by create_material(), and mat_range_r().

◆ m_mat_range_z

float mkfit::TrackerInfo::m_mat_range_z
private

Definition at line 289 of file TrackerInfo.h.

Referenced by create_material(), mat_range_z(), read_bin_file(), and write_bin_file().

◆ m_mat_vec

rectvec<Material> mkfit::TrackerInfo::m_mat_vec
private

◆ m_prop_config

PropagationConfig mkfit::TrackerInfo::m_prop_config
private

Definition at line 293 of file TrackerInfo.h.

Referenced by prop_config(), and prop_config_nc().