14#include <cdc/modules/cdcGeoScan/ScanCDCGeoModule.h>
15#include <cdc/geometry/CDCGeometryPar.h>
28 setDescription(
"This module fills CDC geometry information in histo/tree format to a root file");
36 TH1F* h_nwires =
new TH1F(
"h_nwires",
"Number of wires in layer;CDC layer#", 56, 0.5, 56.5);
37 TH1F* h_stereo =
new TH1F(
"h_stereo",
"Stereo angle in this layer;CDC layer#", 56, 0.5, 56.5);
38 TH1F* h_swire_posF_phi =
new TH1F(
"h_swire_posF_phi",
"#phi of sense wires in forward pos;CDC layer#", 56, 0.5, 56.5);
39 TH1F* h_swire_posF_theta =
new TH1F(
"h_swire_posF_theta",
"#theta of sense wires in forward pos;CDC layer#", 56, 0.5, 56.5);
40 TH1F* h_swire_posB_phi =
new TH1F(
"h_swire_posB_phi",
"#phi of sense wires in backward pos;CDC layer#", 56, 0.5, 56.5);
41 TH1F* h_swire_posB_theta =
new TH1F(
"h_swire_posB_theta",
"#theta of sense wires in backward pos;CDC layer#", 56, 0.5, 56.5);
42 TH1F* h_fwire_iradius =
new TH1F(
"h_fwire_iradius",
"inner radius of field wires;CDC layer#", 56, 0.5, 56.5);
43 TH1F* h_fwire_oradius =
new TH1F(
"h_fwire_oradius",
"outer radius of field wires;CDC layer#", 56, 0.5, 56.5);
44 TH1F* h_width =
new TH1F(
"h_width",
"Cell Width;CDC layer#", 56, 0.5, 56.5);
45 TH1F* h_height =
new TH1F(
"h_height",
"Cell Height;CDC layer#", 56, 0.5, 56.5);
46 TH1F* h_length =
new TH1F(
"h_length",
"length of the wires;CDC layer#", 56, 0.5, 56.5);
48 B2INFO(
"Creating CDCGeometryPar object");
53 cout <<
"------| Summary-1 " << endl;
54 cout << left <<
"Number of CDC wire layers" << setw(15) <<
" " << cdcgeo.
nWireLayers() << endl;
55 cout << left <<
"Sense Wire Diameter" << setw(15) <<
" " << cdcgeo.
senseWireDiameter() << endl;
56 cout << left <<
"Field Wire Diameter" << setw(15) <<
" " << cdcgeo.
fieldWireDiameter() << endl;
58 cout <<
"------| Summary-2 " << endl;
61 << setw(10) <<
"Layer"
62 << setw(15) <<
"nwire"
63 << setw(15) <<
"radii sense"
64 << setw(15) <<
"dRdown"
66 << setw(15) <<
"Delta"
69 for (
unsigned int i = 0; i < cdcgeo.
nWireLayers(); ++i) {
72 h_nwires->SetBinContent(i + 1,
fnWires);
87 const B2Vector3D wireDir = (wirePosF - wirePosB);
93 h_length->SetBinContent(i + 1,
fclength);
97 h_width->SetBinContent(i + 1,
fcwidth);
106 h_height->SetBinContent(i + 1,
fcheight);
110 double delta = -99.0;
128 TDirectory* dhistos =
m_file->mkdir(
"histos");
131 h_swire_posF_phi->Write();
132 h_swire_posB_phi->Write();
133 h_swire_posF_theta->Write();
134 h_swire_posB_theta->Write();
136 h_fwire_iradius->Write();
137 h_fwire_oradius->Write();
142 TDirectory* dvar =
m_file->mkdir(
"vars");
145 TVectorF sWireDia(1);
147 sWireDia.Write(
"sWireDia");
149 TVectorF fWireDia(1);
151 fWireDia.Write(
"fWireDia");
158 m_file =
new TFile(
"CDCGeometryScan.root",
"RECREATE");
159 m_tree =
new TTree(
"tree",
"CDC Geometry details");
DataType Phi() const
The azimuth angle.
DataType Theta() const
The polar angle.
DataType Perp() const
The transverse component (R in cylindrical coordinate system).
The Class for CDC Geometry Parameters.
double fieldWireDiameter() const
Returns diameter of the field wire.
const B2Vector3D wireForwardPosition(uint layerId, int cellId, EWirePosition set=c_Base) const
Returns the forward position of the input sense wire.
double senseWireDiameter() const
Returns diameter of the sense wire.
const B2Vector3D wireBackwardPosition(uint layerId, int cellId, EWirePosition set=c_Base) const
Returns the backward position of the input sense wire.
unsigned nWiresInLayer(int layerId) const
Returns wire numbers in a layer.
const double * innerRadiusWireLayer() const
Returns an array of inner radius of wire layers.
static CDCGeometryPar & Instance(const CDCGeometry *=nullptr)
Static method to get a reference to the CDCGeometryPar instance.
unsigned nWireLayers() const
Returns a number of wire layers.
const double * outerRadiusWireLayer() const
Returns an array of outer radius of wire layers.
double senseWireR(int layerId) const
Returns radius of sense wire in each layer.
void setDescription(const std::string &description)
Sets the description of the module.
TTree * m_tree
output ROOT trees
int fnWires
nwire per layer dist
double fswire_posB_phi
sense wire position in backward dir (phi) per layer dist
void bookOutput()
Create the output TFiles and TTrees.
virtual void initialize() override
init
double fstereoAng
stereo angle per layer dist
double fwire_oradius
field wire outer radius per layer dist
double fclength
wire length per layer dist
virtual void terminate() override
terminate and save information
double fcheight
cell height per layer dist
double fcwidth
cell width per layer dist
double fswire_posF_theta
sense wire position in forward dir (theta) per layer dist
double fswire_posB_theta
sense wire position in backward dir (theta) per layer dist
double fwire_iradius
field wire inner radius per layer dist
TFile * m_file
output ROOT files
ScanCDCGeoModule()
constructor
double fswire_posF_phi
sense wire position in forward dir (phi) per layer dist
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
B2Vector3< double > B2Vector3D
typedef for common usage with double
Abstract base class for different kinds of events.