CMS 3D CMS Logo

CSCGattiFunction Class Reference

Represent functional form of charge distribution over strips in Endcap Muon CSC's. More...

#include <Geometry/CSCGeometry/interface/CSCGattiFunction.h>

List of all members.

Public Member Functions

double 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.
 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 CSCChamberSpecsthePreviousSpecs


Detailed Description

Represent functional form of charge distribution over strips in Endcap Muon CSC's.

Author:
Rick Wilkinson
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
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.


Constructor & Destructor Documentation

CSCGattiFunction::CSCGattiFunction (  ) 

Definition at line 10 of file CSCGattiFunction.cc.

00011 : k1(0.), 
00012   k2(0.), 
00013   k3(0.), 
00014   h(0.),
00015   norm(0.),
00016   sqrtk3(0.),
00017   thePreviousSpecs(0)
00018 {
00019 }


Member Function Documentation

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().

00045                                                                     {
00046   double tanh1 = tanh(k2 * (x+stripWidth*0.5)/h );
00047   double tanh2 = tanh(k2 * (x-stripWidth*0.5)/h );
00048   return norm * ( std::atan(sqrtk3*tanh1) - std::atan(sqrtk3*tanh2) );
00049 }

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, s, funct::sqrt(), sqrtk3, thePreviousSpecs, CSCChamberSpecs::wireRadius(), and CSCChamberSpecs::wireSpacing().

Referenced by CSCStripHitSim::simulate().

00022                                                                             {
00023   if(&chamberSpecs != thePreviousSpecs) {
00024     LogTrace("CSCGattiFunction") << "CSCGattiFunction::initChamberSpecs setting new values.";
00025     h = chamberSpecs.anodeCathodeSpacing();
00026     double s = chamberSpecs.wireSpacing();
00027     double ra = chamberSpecs.wireRadius();
00028     static const double parm[5] = {.1989337e-02, -.6901542e-04,  .8665786, 
00029                                    154.6177, -.6801630e-03 };
00030     k3 = (parm[0]*s/h + parm[1]) 
00031            * (parm[2]*s/ra + parm[3] + parm[4]*s*s/ra/ra);
00032     sqrtk3 = sqrt(k3);
00033     norm = 0.5 / std::atan( sqrtk3 );
00034     k2 = M_PI_2 * (1. - sqrtk3/2.);
00035     k1 = 0.25 * k2 * sqrtk3 / std::atan(sqrtk3);
00036     thePreviousSpecs = &chamberSpecs;
00037   }
00038 
00039   LogTrace("CSCGattiFunction")  << "CSCGattiFunction: constants k1=" << 
00040       k1 << ", k2=" << k2 << ", k3=" << k3 << 
00041       ", h=" << h << ", norm=" << norm;
00042 }


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:19 2009 for CMSSW by  doxygen 1.5.4