DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
dd4hep::rec::DCH_info_struct Struct Reference

#include <DCH_info.h>

Classes

struct  DCH_info_layer
 Internal helper struct for defining the layer layout. More...
 

Public Types

using DCH_layer = int
 type for layer number More...
 
using DCH_length_t = double
 tpye for lengths More...
 
using DCH_angle_t = double
 tpye for angles More...
 

Public Member Functions

void Set_lhalf (DCH_length_t _dch_Lhalf)
 
void Set_rin (DCH_length_t _dch_rin)
 
void Set_rout (DCH_length_t _dch_rout)
 
void Set_guard_rin_at_z0 (DCH_length_t _dch_rin_z0_guard)
 
void Set_guard_rout_at_zL2 (DCH_length_t _dch_rout_zL2_guard)
 
void Set_ncell0 (int _ncell0)
 
void Set_ncell_increment (int _ncell_increment)
 
void Set_nlayersPerSuperlayer (int _nlayersPerSuperlayer)
 
void Set_nsuperlayers (int _nsuperlayers)
 
void Set_ncell_per_sector (int _ncell_per_sector)
 
void Set_twist_angle (DCH_length_t _dch_twist_angle)
 
void Set_first_width (double _first_width)
 
void Set_first_sense_r (double _first_sense_r)
 
int Get_ncells (int ilayer)
 
DCH_angle_t Get_phi_width (int ilayer)
 Get phi width for the twisted tube and the step (phi distance between cells) More...
 
DCH_angle_t Get_cell_phi_angle (int ilayer, int nphi)
 
int Get_nsuperlayer_minus_1 (int ilayer)
 
DCH_length_t Radius_zLhalf (DCH_length_t r_z0) const
 Calculate radius at z=L/2 given at z=0. More...
 
DCH_angle_t stereoangle_z0 (DCH_length_t r_z0) const
 tan(stereoangle) = R(z=0) / (L/2) * tan( twist_angle/2) More...
 
DCH_angle_t stereoangle_zLhalf (DCH_length_t r_zLhalf) const
 tan(stereoangle) = R(z=L/2) / (L/2) * sin( twist_angle/2) More...
 
DCH_length_t WireLength (int nlayer, DCH_length_t r_z0) const
 WireLength = 2*dch_Lhalf/cos(atan(Pitch_z0(r_z0)/(2*dch_Lhalf)))/cos(stereoangle_z0(r_z0)) More...
 
bool IsDatabaseEmpty () const
 
void BuildLayerDatabase ()
 
void Show_DCH_info_database (std::ostream &io) const
 
bool IsValid () const
 Check if outer volume is not zero (0 < Lhalf*rout), and if the database was filled. More...
 
DCH_layer CalculateILayerFromCellIDFields (int layer, int superlayer) const
 
TVector3 Calculate_hitpos_to_wire_vector (int ilayer, int nphi, const TVector3 &hit_position) const
 
TVector3 Calculate_wire_vector_ez (int ilayer, int nphi) const
 
TVector3 Calculate_wire_z0_point (int ilayer, int nphi) const
 
double Calculate_wire_phi_z0 (int ilayer, int nphi) const
 

Public Attributes

DCH_length_t Lhalf = {0}
 Half length of the active volume. More...
 
DCH_length_t rin = {0}
 Inner radius of the active volume. More...
 
DCH_length_t rout = {0}
 Outer radius of the active volume. More...
 
DCH_length_t guard_inner_r_at_z0 = {0}
 Inner guard wires radius. More...
 
DCH_length_t guard_outer_r_at_zL2 = {0}
 Outer guard wires radius. More...
 
int ncell0 = {0}
 number of cells of first layer More...
 
int ncell_increment = {0}
 
int ncell_per_sector = {0}
 cells within the same layer may be grouped into sectors, not in use atm More...
 
DCH_layer nlayersPerSuperlayer = {0}
 input number of layers in each superlayer More...
 
DCH_layer nsuperlayers = {0}
 
DCH_layer nlayers = {0}
 Calculated as dch_nlayersPerSuperlayer * dch_nsuperlayers. More...
 
DCH_angle_t twist_angle = {0}
 
double first_width = {0}
 Cell width for the first layer. More...
 
DCH_length_t first_sense_r = {0}
 Cell radius for the first layer. More...
 
std::map< DCH_layer, DCH_info_layerdatabase
 map to store parameters for each layer More...
 

Detailed Description

Definition at line 32 of file DCH_info.h.

Member Typedef Documentation

◆ DCH_angle_t

tpye for angles

Definition at line 42 of file DCH_info.h.

◆ DCH_layer

type for layer number

Definition at line 38 of file DCH_info.h.

◆ DCH_length_t

tpye for lengths

Definition at line 40 of file DCH_info.h.

Member Function Documentation

◆ BuildLayerDatabase()

void dd4hep::rec::DCH_info_struct::BuildLayerDatabase ( )
inline

nlayers = nsuperlayers * nlayersPerSuperlayer default: 112 = 14 * 8

Definition at line 199 of file DCH_info.h.

◆ Calculate_hitpos_to_wire_vector()

TVector3 dd4hep::rec::DCH_info_struct::Calculate_hitpos_to_wire_vector ( int  ilayer,
int  nphi,
const TVector3 &  hit_position 
) const
inline

Definition at line 424 of file DCH_info.h.

◆ Calculate_wire_phi_z0()

double dd4hep::rec::DCH_info_struct::Calculate_wire_phi_z0 ( int  ilayer,
int  nphi 
) const
inline

Definition at line 413 of file DCH_info.h.

◆ Calculate_wire_vector_ez()

TVector3 dd4hep::rec::DCH_info_struct::Calculate_wire_vector_ez ( int  ilayer,
int  nphi 
) const
inline

Definition at line 363 of file DCH_info.h.

◆ Calculate_wire_z0_point()

TVector3 dd4hep::rec::DCH_info_struct::Calculate_wire_z0_point ( int  ilayer,
int  nphi 
) const
inline

Definition at line 403 of file DCH_info.h.

◆ CalculateILayerFromCellIDFields()

DCH_layer dd4hep::rec::DCH_info_struct::CalculateILayerFromCellIDFields ( int  layer,
int  superlayer 
) const
inline

Definition at line 189 of file DCH_info.h.

◆ Get_cell_phi_angle()

DCH_angle_t dd4hep::rec::DCH_info_struct::Get_cell_phi_angle ( int  ilayer,
int  nphi 
)
inline

phi positioning, adding offset for odd ilayers there is a staggering in phi for alternating layers, 0.25*cell_phi_width*(ilayer%2);

Definition at line 113 of file DCH_info.h.

◆ Get_ncells()

int dd4hep::rec::DCH_info_struct::Get_ncells ( int  ilayer)
inline

Get number of cells in a given layer ncells = number of wires/2

Definition at line 106 of file DCH_info.h.

◆ Get_nsuperlayer_minus_1()

int dd4hep::rec::DCH_info_struct::Get_nsuperlayer_minus_1 ( int  ilayer)
inline

calculate superlayer for a given ilayer. WARNING: division of integers on purpose!

Definition at line 117 of file DCH_info.h.

◆ Get_phi_width()

DCH_angle_t dd4hep::rec::DCH_info_struct::Get_phi_width ( int  ilayer)
inline

Get phi width for the twisted tube and the step (phi distance between cells)

Definition at line 109 of file DCH_info.h.

◆ IsDatabaseEmpty()

bool dd4hep::rec::DCH_info_struct::IsDatabaseEmpty ( ) const
inline

Definition at line 179 of file DCH_info.h.

◆ IsValid()

bool dd4hep::rec::DCH_info_struct::IsValid ( ) const
inline

Check if outer volume is not zero (0 < Lhalf*rout), and if the database was filled.

Definition at line 185 of file DCH_info.h.

◆ Radius_zLhalf()

DCH_length_t dd4hep::rec::DCH_info_struct::Radius_zLhalf ( DCH_length_t  r_z0) const
inline

Calculate radius at z=L/2 given at z=0.

Definition at line 120 of file DCH_info.h.

◆ Set_first_sense_r()

void dd4hep::rec::DCH_info_struct::Set_first_sense_r ( double  _first_sense_r)
inline

Definition at line 101 of file DCH_info.h.

◆ Set_first_width()

void dd4hep::rec::DCH_info_struct::Set_first_width ( double  _first_width)
inline

Definition at line 100 of file DCH_info.h.

◆ Set_guard_rin_at_z0()

void dd4hep::rec::DCH_info_struct::Set_guard_rin_at_z0 ( DCH_length_t  _dch_rin_z0_guard)
inline

Definition at line 87 of file DCH_info.h.

◆ Set_guard_rout_at_zL2()

void dd4hep::rec::DCH_info_struct::Set_guard_rout_at_zL2 ( DCH_length_t  _dch_rout_zL2_guard)
inline

Definition at line 88 of file DCH_info.h.

◆ Set_lhalf()

void dd4hep::rec::DCH_info_struct::Set_lhalf ( DCH_length_t  _dch_Lhalf)
inline

Definition at line 83 of file DCH_info.h.

◆ Set_ncell0()

void dd4hep::rec::DCH_info_struct::Set_ncell0 ( int  _ncell0)
inline

Definition at line 90 of file DCH_info.h.

◆ Set_ncell_increment()

void dd4hep::rec::DCH_info_struct::Set_ncell_increment ( int  _ncell_increment)
inline

Definition at line 91 of file DCH_info.h.

◆ Set_ncell_per_sector()

void dd4hep::rec::DCH_info_struct::Set_ncell_per_sector ( int  _ncell_per_sector)
inline

Definition at line 96 of file DCH_info.h.

◆ Set_nlayersPerSuperlayer()

void dd4hep::rec::DCH_info_struct::Set_nlayersPerSuperlayer ( int  _nlayersPerSuperlayer)
inline

Definition at line 93 of file DCH_info.h.

◆ Set_nsuperlayers()

void dd4hep::rec::DCH_info_struct::Set_nsuperlayers ( int  _nsuperlayers)
inline

Definition at line 94 of file DCH_info.h.

◆ Set_rin()

void dd4hep::rec::DCH_info_struct::Set_rin ( DCH_length_t  _dch_rin)
inline

Definition at line 84 of file DCH_info.h.

◆ Set_rout()

void dd4hep::rec::DCH_info_struct::Set_rout ( DCH_length_t  _dch_rout)
inline

Definition at line 85 of file DCH_info.h.

◆ Set_twist_angle()

void dd4hep::rec::DCH_info_struct::Set_twist_angle ( DCH_length_t  _dch_twist_angle)
inline

Definition at line 98 of file DCH_info.h.

◆ Show_DCH_info_database()

void dd4hep::rec::DCH_info_struct::Show_DCH_info_database ( std::ostream &  io) const
inline

Definition at line 298 of file DCH_info.h.

◆ stereoangle_z0()

DCH_angle_t dd4hep::rec::DCH_info_struct::stereoangle_z0 ( DCH_length_t  r_z0) const
inline

tan(stereoangle) = R(z=0) / (L/2) * tan( twist_angle/2)

Definition at line 125 of file DCH_info.h.

◆ stereoangle_zLhalf()

DCH_angle_t dd4hep::rec::DCH_info_struct::stereoangle_zLhalf ( DCH_length_t  r_zLhalf) const
inline

tan(stereoangle) = R(z=L/2) / (L/2) * sin( twist_angle/2)

Definition at line 130 of file DCH_info.h.

◆ WireLength()

DCH_length_t dd4hep::rec::DCH_info_struct::WireLength ( int  nlayer,
DCH_length_t  r_z0 
) const
inline

WireLength = 2*dch_Lhalf/cos(atan(Pitch_z0(r_z0)/(2*dch_Lhalf)))/cos(stereoangle_z0(r_z0))

Definition at line 135 of file DCH_info.h.

Member Data Documentation

◆ database

std::map<DCH_layer, DCH_info_layer> dd4hep::rec::DCH_info_struct::database

map to store parameters for each layer

Definition at line 178 of file DCH_info.h.

◆ first_sense_r

DCH_length_t dd4hep::rec::DCH_info_struct::first_sense_r = {0}

Cell radius for the first layer.

Definition at line 81 of file DCH_info.h.

◆ first_width

double dd4hep::rec::DCH_info_struct::first_width = {0}

Cell width for the first layer.

Definition at line 79 of file DCH_info.h.

◆ guard_inner_r_at_z0

DCH_length_t dd4hep::rec::DCH_info_struct::guard_inner_r_at_z0 = {0}

Inner guard wires radius.

Definition at line 51 of file DCH_info.h.

◆ guard_outer_r_at_zL2

DCH_length_t dd4hep::rec::DCH_info_struct::guard_outer_r_at_zL2 = {0}

Outer guard wires radius.

Definition at line 53 of file DCH_info.h.

◆ Lhalf

DCH_length_t dd4hep::rec::DCH_info_struct::Lhalf = {0}

Half length of the active volume.

Definition at line 44 of file DCH_info.h.

◆ ncell0

int dd4hep::rec::DCH_info_struct::ncell0 = {0}

number of cells of first layer

Definition at line 56 of file DCH_info.h.

◆ ncell_increment

int dd4hep::rec::DCH_info_struct::ncell_increment = {0}

increment the number of cells for each superlayer as: ncells(ilayer) = dch_ncell0 + increment*superlayer(ilayer) See DCH_info::Get_nsuperlayer_minus_1(ilayer)

Definition at line 60 of file DCH_info.h.

◆ ncell_per_sector

int dd4hep::rec::DCH_info_struct::ncell_per_sector = {0}

cells within the same layer may be grouped into sectors, not in use atm

Definition at line 63 of file DCH_info.h.

◆ nlayers

DCH_layer dd4hep::rec::DCH_info_struct::nlayers = {0}

Calculated as dch_nlayersPerSuperlayer * dch_nsuperlayers.

Definition at line 72 of file DCH_info.h.

◆ nlayersPerSuperlayer

DCH_layer dd4hep::rec::DCH_info_struct::nlayersPerSuperlayer = {0}

input number of layers in each superlayer

Definition at line 66 of file DCH_info.h.

◆ nsuperlayers

DCH_layer dd4hep::rec::DCH_info_struct::nsuperlayers = {0}

input number of superlayers superlayer is an abstract level of grouping layers used to parametrize the increment of cells in each layer

Definition at line 70 of file DCH_info.h.

◆ rin

DCH_length_t dd4hep::rec::DCH_info_struct::rin = {0}

Inner radius of the active volume.

Definition at line 46 of file DCH_info.h.

◆ rout

DCH_length_t dd4hep::rec::DCH_info_struct::rout = {0}

Outer radius of the active volume.

Definition at line 48 of file DCH_info.h.

◆ twist_angle

DCH_angle_t dd4hep::rec::DCH_info_struct::twist_angle = {0}

global twist angle alternating layers will change its sign

Definition at line 76 of file DCH_info.h.


The documentation for this struct was generated from the following file: