Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:14:24

0001 #ifndef CSCGeomety_CSCGattiFunction_h
0002 #define CSCGeomety_CSCGattiFunction_h
0003 
0004 /** \class CSCGattiFunction
0005  *
0006  * Represent functional form of charge distribution over strips
0007  * in Endcap Muon CSC's.
0008  *
0009  * \author Rick Wilkinson
0010  *
0011  * This is required in building RecHits from strips in CSCRecHit
0012  * and for distributing charge over strips in CSCDigitizer.
0013  *
0014  * It was ported from FORTRAN in CMSISM to C++ in ORCA and then CMSSW. <BR>
0015  *
0016  *  Function: describes the cathode signal using                       <BR>
0017  *                the single-parameter Gatti formula:                  <BR>
0018 @code
0019  *                              1 - tanh(K_2 * lambda)**2              
0020  *     Gamma(lambda) = K_1 * -------------------------------           
0021  *                           1 + K_3 * tanh (K_2 *lambda)**2           
0022  *     lambda = x/h, h is anode cathode spacing                        
0023  *                                                                     
0024  *     K_2 = pi/2*(1 - 0.5*sqrt(K_3))                                  
0025  *                                                                     
0026  *              K_2*sqrt(K_3)                                          
0027  *      K_1 = -------------------                                      
0028  *            4 * atan(sqrt(K_3))                                      
0029  *                                                                     
0030  *  References  : E.Gatti, A.Longoni, NIM 163 (1979) 82-93.            
0031  *                                                                     
0032  *  For K_3, "It is used parametrization from Fig.2 from E.Mathieson   
0033  *            J.S.Gordon, "Cathode charge distributions in multi-      
0034  *            wire chambers", NIM 227 (1984) 277-282"                  
0035  *  (comment from GATTI3 in cmsim/src/mc_uty/.)                        
0036 @endcode
0037  
0038  */
0039 
0040 class CSCChamberSpecs;
0041 
0042 class CSCGattiFunction {
0043 public:
0044   CSCGattiFunction();
0045   /// Calculates k1, k2, k3, h per chamber type, if necessary
0046   void initChamberSpecs(const CSCChamberSpecs &);
0047 
0048   ///  Returns the fraction of charge on a strip centered
0049   ///  a distance of x away from the center of the shower,
0050   ///  at zero.  Note that the user is responsible for making
0051   ///  sure the constants have been initialized using the chamber specs.
0052   double binValue(double x, double stripWidth) const;
0053 
0054 private:
0055   // geometry constants for the detector
0056   double k1, k2, k3, h;
0057   double norm, sqrtk3;
0058 
0059   const CSCChamberSpecs *thePreviousSpecs;
0060 };
0061 
0062 #endif