#include <CSCGattiFunction.h>
Public Member Functions | |
double | binValue (double x, double stripWidth) const |
CSCGattiFunction () | |
void | initChamberSpecs (const CSCChamberSpecs &) |
Calculates k1, k2, k3, h per chamber type, if necessary. | |
Private Attributes | |
double | h |
double | k1 |
double | k2 |
double | k3 |
double | norm |
double | sqrtk3 |
const CSCChamberSpecs * | thePreviousSpecs |
Represent functional form of charge distribution over strips in Endcap Muon CSC's.
This is required in building RecHits from strips in CSCRecHit and for distributing charge over strips in CSCDigitizer.
It was ported from FORTRAN in CMSISM to C++ in ORCA and then CMSSW.
Function: describes the cathode signal using
the single-parameter Gatti formula:
1 - tanh(K_2 * lambda)**2
Gamma(lambda) = K_1 * -------------------------------
1 + K_3 * tanh (K_2 *lambda)**2
lambda = x/h, h is anode cathode spacing
K_2 = pi/2*(1 - 0.5*sqrt(K_3))
K_2*sqrt(K_3)
K_1 = -------------------
4 * atan(sqrt(K_3))
References : E.Gatti, A.Longoni, NIM 163 (1979) 82-93.
For K_3, "It is used parametrization from Fig.2 from E.Mathieson <BR>
J.S.Gordon, "Cathode charge distributions in multi-
wire chambers", NIM 227 (1984) 277-282"
(comment from GATTI3 in cmsim/src/mc_uty/.)
Definition at line 39 of file CSCGattiFunction.h.
CSCGattiFunction::CSCGattiFunction | ( | ) |
Definition at line 10 of file CSCGattiFunction.cc.
double CSCGattiFunction::binValue | ( | double | x, |
double | stripWidth | ||
) | const |
Returns the fraction of charge on a strip centered a distance of x away from the center of the shower, at zero. Note that the user is responsible for making sure the constants have been initialized using the chamber specs.
Definition at line 45 of file CSCGattiFunction.cc.
References h, k2, norm, and sqrtk3.
Referenced by CSCStripHitSim::simulate().
void CSCGattiFunction::initChamberSpecs | ( | const CSCChamberSpecs & | chamberSpecs | ) |
Calculates k1, k2, k3, h per chamber type, if necessary.
Definition at line 22 of file CSCGattiFunction.cc.
References CSCChamberSpecs::anodeCathodeSpacing(), h, k1, k2, k3, LogTrace, M_PI_2, norm, asciidump::s, mathSSE::sqrt(), sqrtk3, thePreviousSpecs, CSCChamberSpecs::wireRadius(), and CSCChamberSpecs::wireSpacing().
Referenced by CSCStripHitSim::simulate().
{ if(&chamberSpecs != thePreviousSpecs) { LogTrace("CSCGattiFunction") << "CSCGattiFunction::initChamberSpecs setting new values."; h = chamberSpecs.anodeCathodeSpacing(); double s = chamberSpecs.wireSpacing(); double ra = chamberSpecs.wireRadius(); static const double parm[5] = {.1989337e-02, -.6901542e-04, .8665786, 154.6177, -.6801630e-03 }; k3 = (parm[0]*s/h + parm[1]) * (parm[2]*s/ra + parm[3] + parm[4]*s*s/ra/ra); sqrtk3 = sqrt(k3); norm = 0.5 / std::atan( sqrtk3 ); k2 = M_PI_2 * (1. - sqrtk3/2.); k1 = 0.25 * k2 * sqrtk3 / std::atan(sqrtk3); thePreviousSpecs = &chamberSpecs; } LogTrace("CSCGattiFunction") << "CSCGattiFunction: constants k1=" << k1 << ", k2=" << k2 << ", k3=" << k3 << ", h=" << h << ", norm=" << norm; }
double CSCGattiFunction::h [private] |
Definition at line 54 of file CSCGattiFunction.h.
Referenced by binValue(), and initChamberSpecs().
double CSCGattiFunction::k1 [private] |
Definition at line 54 of file CSCGattiFunction.h.
Referenced by initChamberSpecs().
double CSCGattiFunction::k2 [private] |
Definition at line 54 of file CSCGattiFunction.h.
Referenced by binValue(), and initChamberSpecs().
double CSCGattiFunction::k3 [private] |
Definition at line 54 of file CSCGattiFunction.h.
Referenced by initChamberSpecs().
double CSCGattiFunction::norm [private] |
Definition at line 55 of file CSCGattiFunction.h.
Referenced by binValue(), and initChamberSpecs().
double CSCGattiFunction::sqrtk3 [private] |
Definition at line 55 of file CSCGattiFunction.h.
Referenced by binValue(), and initChamberSpecs().
const CSCChamberSpecs* CSCGattiFunction::thePreviousSpecs [private] |
Definition at line 57 of file CSCGattiFunction.h.
Referenced by initChamberSpecs().