CMS 3D CMS Logo

CastorShape.cc

Go to the documentation of this file.
00001 #include "SimCalorimetry/CastorSim/src/CastorShape.h"
00002 #include <cmath>
00003   
00004 CastorShape::CastorShape()
00005 : nbin_(256),
00006   nt_(nbin_, 0.)
00007 {   
00008   setTpeak(2.0);
00009   computeShapeCastor();
00010 }
00011 
00012 
00013 CastorShape::CastorShape(const CastorShape&d)
00014 : CaloVShape(d),
00015   nbin_(d.nbin_),
00016   nt_(d.nt_)
00017 {
00018   setTpeak(2.0);
00019 }
00020 
00021   
00022 void CastorShape::computeShapeCastor()
00023 {
00024 
00025   //  cout << endl << " ===== computeShapeCastor  !!! " << endl << endl;
00026 
00027   const float ts = 3.0;           // time constant in   t * exp(-(t/ts)**2)
00028 
00029 
00030   int j;
00031   float norm;
00032 
00033   // HF SHAPE
00034   norm = 0.0;
00035   for( j = 0; j < 3 * ts && j < nbin_; j++){
00036     //nt_[j] = ((float)j)*exp(-((float)(j*j))/(ts*ts));
00037     nt_[j] = j * exp(-(j*j)/(ts*ts));
00038     norm += nt_[j];
00039   }
00040   // normalize pulse area to 1.0
00041   for( j = 0; j < 3 * ts && j < nbin_; j++){
00042     nt_[j] /= norm;
00043   }
00044 }
00045 
00046 double CastorShape::operator () (double time) const
00047 {
00048 
00049   // return pulse amplitude for request time in ns
00050   int jtime;
00051   jtime = static_cast<int>(time+0.5);
00052 
00053   if(jtime >= 0 && jtime < nbin_)
00054     return nt_[jtime];
00055   else 
00056     return 0.0;
00057 }
00058 
00059 double CastorShape::derivative (double time) const
00060 {
00061   return 0.0;
00062 }
00063   

Generated on Tue Jun 9 17:46:14 2009 for CMSSW by  doxygen 1.5.4