CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
EvolutionECAL Class Reference

#include <EvolutionECAL.h>

Public Member Functions

double AgingVPT (double instLumi, double integralLumi, double eta)
 
double ChargeVPTCathode (double instLumi, double eta, double integralLumi)
 
double DamageProfileEta (double eta)
 
double DamageProfileEtaAPD (double eta)
 
double DegradationMeanEM50GeV (double mu)
 
double DegradationNonLinearityEM50GeV (double mu, double ene)
 
double DoseLongitudinalProfile (double z)
 
Double_t EquilibriumFractionColorCentersEM (double *x, double *par)
 
 EvolutionECAL ()
 
double InducedAbsorptionEM (double lumi, double eta)
 
double InducedAbsorptionHadronic (double lumi, double eta)
 
double LightCollectionEfficiency (double z, double mu)
 
double LightCollectionEfficiencyWeighted (double z, double mu_ind)
 
double NoiseFactorFE (double lumi, double eta)
 
double ResolutionConstantTermEM50GeV (double mu)
 
virtual ~EvolutionECAL ()
 

Detailed Description

Definition at line 23 of file EvolutionECAL.h.

Constructor & Destructor Documentation

EvolutionECAL::EvolutionECAL ( )

Definition at line 11 of file EvolutionECAL.cc.

12 {
13 }
EvolutionECAL::~EvolutionECAL ( )
virtual

Definition at line 6 of file EvolutionECAL.cc.

7 {
8 }

Member Function Documentation

double EvolutionECAL::AgingVPT ( double  instLumi,
double  integralLumi,
double  eta 
)

Definition at line 364 of file EvolutionECAL.cc.

References ChargeVPTCathode(), alignCSCRings::e, create_public_lumi_plots::exp, and query::result.

Referenced by EnergyResolutionVsLumi::calcampDropPhotoDetector(), and EnergyResolutionVsLumi::CalculateDegradation().

365 {
366  if(fabs(eta)<1.497) return 1.0;
367  double Q = ChargeVPTCathode(instLumi, eta, integralLumi);
368  double result = 0.772+0.228*(3.94304e-01*exp(-Q/5.99232e-04)+(1-3.94304e-01)*exp(-Q/1.58243e-02));
369  return result;
370 }
T eta() const
tuple result
Definition: query.py:137
double ChargeVPTCathode(double instLumi, double eta, double integralLumi)
double EvolutionECAL::ChargeVPTCathode ( double  instLumi,
double  eta,
double  integralLumi 
)

Definition at line 343 of file EvolutionECAL.cc.

References DeDxDiscriminatorTools::charge(), DamageProfileEta(), DegradationMeanEM50GeV(), InducedAbsorptionEM(), and InducedAbsorptionHadronic().

Referenced by AgingVPT().

344 {
345  double charge = 0.0;
346  double tmpLumi = 0.0;
347  double stepLumi = 1.0;
348  double muEM = InducedAbsorptionEM(instLumi, eta);
349  while(tmpLumi<integralLumi)
350  {
351  tmpLumi += stepLumi;
352  double muHD = InducedAbsorptionHadronic(tmpLumi, eta);
353  double SS0 = DegradationMeanEM50GeV(muEM+muHD);
354  charge += SS0*0.26e-3*DamageProfileEta(eta)*stepLumi;
355  }
356  return charge;
357 }
T eta() const
double charge(const std::vector< uint8_t > &Ampls)
double DegradationMeanEM50GeV(double mu)
double InducedAbsorptionHadronic(double lumi, double eta)
double InducedAbsorptionEM(double lumi, double eta)
double DamageProfileEta(double eta)
double EvolutionECAL::DamageProfileEta ( double  eta)

Definition at line 183 of file EvolutionECAL.cc.

References create_public_lumi_plots::exp, and x.

Referenced by ChargeVPTCathode(), EquilibriumFractionColorCentersEM(), and InducedAbsorptionHadronic().

184 {
185  double x = fabs(eta);
186  if(x<1.497){
187  return exp( -4.11065 + 0.258478*x );
188  }else{
189  return exp( -13.5112 + 7.913860*x - 0.998649*x*x );
190  }
191 }
T eta() const
Definition: DDAxes.h:10
double EvolutionECAL::DamageProfileEtaAPD ( double  eta)

Definition at line 195 of file EvolutionECAL.cc.

References x.

Referenced by NoiseFactorFE().

196 {
197  double x = fabs(eta);
198  if(x<1.497){
199  double et=x/1.48*34.0;
200  double etaprof=( 9.54827 + et*0.0379222 +
201  et*et*(-0.00257047) +
202  et*et*et*0.00073546 +
203  et*et*et*et*(-1.49683e-05)
204  )/9.54827;
205  return etaprof;
206  }else{
207  return 1.0;
208  }
209 }
T eta() const
Definition: DDAxes.h:10
double EvolutionECAL::DegradationMeanEM50GeV ( double  mu)

Definition at line 271 of file EvolutionECAL.cc.

References alpha, alignCSCRings::e, create_public_lumi_plots::exp, python.connectstrParser::f1, python.connectstrParser::f2, i, log, RPCpg::mu, and x.

Referenced by EnergyResolutionVsLumi::calcampDropTransparency(), EnergyResolutionVsLumi::CalculateDegradation(), and ChargeVPTCathode().

272 {
273  double retval = 1.0;
274  double x = mu;
275  if( x<1e-4 ) return retval;
276  if( x>=200.0 ) x=200.0; // parameterization is not valid for large mu
277 
278  double par[11] = { 1.00000e+01,
279  -4.41441e-01, 7.08607e-02, -3.75572e-01, -3.60410e-01, 1.30130e-01,
280  -4.72350e-01, 3.36315e-01, -1.19872e-01, 1.99574e-02,-1.22910e-03 };
281 
282 
283  double alpha = par[0];
284 
285  double f1 = par[1]*x + par[2]*x*x;
286  double u = log(x);
287  double f2 = par[10];
288  for(int i=9; i>=3; i--) f2 = par[i] + f2*u;
289 
290  retval = f1/(1.0+exp(alpha*u)) + f2/(1.0+exp(-alpha*u));
291  retval = exp(retval);
292  return retval;
293 
294 
295 }
int i
Definition: DBlmapReader.cc:9
float alpha
Definition: AMPTWrapper.h:95
static std::vector< std::string > checklist log
const int mu
Definition: Constants.h:22
Definition: DDAxes.h:10
double EvolutionECAL::DegradationNonLinearityEM50GeV ( double  mu,
double  ene 
)

Definition at line 301 of file EvolutionECAL.cc.

References alignCSCRings::e, i, RPCpg::mu, slope, and x.

302 {
303  if(ene<=1e-3) return 0.0;
304 
305  double x = mu;
306  if( mu<=0.06 ) x=0.06;
307  if( mu>=150.0 ) x=150.0;
308 
309  double par[9] = { 5.17712e-03, 1.97597e-02, 3.36596e-02, 2.84505e-02, 1.38480e-02,
310  1.11498e-02, 7.73634e-03, -1.30767e-03, -2.20628e-03 };
311 
312  double u = log10(x);
313  double slope = par[8];
314  for(int i=7; i>=0; i--) slope = par[i] + slope*u;
315 
316  double retval = 1.0 + slope*log10(ene/50.0);
317  if(retval<=0.0) retval = 0.0;
318  return retval;
319 
320 }
int i
Definition: DBlmapReader.cc:9
static const double slope[3]
const int mu
Definition: Constants.h:22
Definition: DDAxes.h:10
double EvolutionECAL::DoseLongitudinalProfile ( double  z)

Definition at line 222 of file EvolutionECAL.cc.

References alpha, beta, create_public_lumi_plots::exp, Gamma, evf::evtn::offset(), and funct::pow().

Referenced by EquilibriumFractionColorCentersEM().

223 {
224  double alpha = 4.72877e+00;
225  double beta = 5.91296e-01;
226  double amp1 = 6.24495e+02;
227  double amp2 = 1.84367e-01;
228  double offset = 2.00705e+01;
229  if (z>=0.0 && z<=22.0) {
230  double term1 = (amp1 / TMath::Gamma(alpha)) * pow((beta*z),(alpha-1)) * exp (-beta*z);
231  double term2 = amp2*(z-11.0)*(z-11.0) + offset;
232  return (term1 + term2)/150.44;
233  } else {
234  return 0;
235  }
236 }
const double beta
float alpha
Definition: AMPTWrapper.h:95
float float float z
unsigned int offset(bool)
dbl * Gamma
Definition: mlp_gen.cc:38
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Double_t EvolutionECAL::EquilibriumFractionColorCentersEM ( double *  x,
double *  par 
)

Definition at line 241 of file EvolutionECAL.cc.

References alpha, DamageProfileEta(), DoseLongitudinalProfile(), alignCSCRings::e, eta(), and RPCpg::rate().

Referenced by InducedAbsorptionEM().

242 {
243  double instantLumi = par[0];
244  double eta = par[1];
245  double rate = DoseLongitudinalProfile(x[0])*5.0*DamageProfileEta(eta)*instantLumi/1e+34;
246  if(rate<=0.0) rate=0.0;
247  double alpha = par[2];
248  return rate/(alpha + rate);
249 }
float alpha
Definition: AMPTWrapper.h:95
T eta() const
double DoseLongitudinalProfile(double z)
double rate(double x)
Definition: Constants.cc:3
double DamageProfileEta(double eta)
Definition: DDAxes.h:10
double EvolutionECAL::InducedAbsorptionEM ( double  lumi,
double  eta 
)

Definition at line 255 of file EvolutionECAL.cc.

References EquilibriumFractionColorCentersEM().

Referenced by EnergyResolutionVsLumi::calcmuEM(), EnergyResolutionVsLumi::calcmuTot(), EnergyResolutionVsLumi::CalculateDegradation(), and ChargeVPTCathode().

256 {
257  double mu_max = 2.0;
258  double alpha1 = 3.41488e+00;
259 
260  TF1 *ftmp1 = new TF1("ftmp1",this,&EvolutionECAL::EquilibriumFractionColorCentersEM,
261  0.0,22.0,3,"EvolutionECAL" , "EquilibriumFractionColorCentersEM");
262  ftmp1->SetParameters(lumi, eta, alpha1);
263  double muEM = mu_max*ftmp1->Integral(0.0, 22.0)/22.0;
264 
265  delete ftmp1;
266  return muEM;
267 }
Double_t EquilibriumFractionColorCentersEM(double *x, double *par)
tuple lumi
Definition: fjr2json.py:35
T eta() const
double EvolutionECAL::InducedAbsorptionHadronic ( double  lumi,
double  eta 
)

Definition at line 213 of file EvolutionECAL.cc.

References DamageProfileEta(), fjr2json::lumi, RPCpg::mu, and funct::pow().

Referenced by EnergyResolutionVsLumi::calcmuHD(), EnergyResolutionVsLumi::calcmuTot(), EnergyResolutionVsLumi::CalculateDegradation(), and ChargeVPTCathode().

214 {
215  double fluence = DamageProfileEta(eta) * 2.7e+13/500.0 * lumi;
216  double mu = 2.08E-13 * pow( fluence, 1.0049);
217  return mu;
218 }
tuple lumi
Definition: fjr2json.py:35
T eta() const
const int mu
Definition: Constants.h:22
double DamageProfileEta(double eta)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double EvolutionECAL::LightCollectionEfficiency ( double  z,
double  mu 
)

Definition at line 16 of file EvolutionECAL.cc.

References funct::A, funct::C, alignmentValidation::c1, create_public_lumi_plots::exp, f, RPCpg::mu, funct::pow(), dttmaxenums::R, and detailsBasic3DVector::z.

17 {
18  double f = 0;
19  if(z<=0) return f;
20  if(z>=0.22) return f;
21 
22  double e0 = 6.91563e-02;
23  double e1 = 1.64406e+00;
24  double e2 = 6.42509e-01;
25  double E = e0/(1+exp(e1*(log10(mu)-e2)));
26 
27  double d0 = 3.85334e-01;
28  double d1 = -1.04647e-02;
29  double D = d0*exp(d1*mu);
30 
31  double c0 = 3.77629e-01;
32  double c1 = -3.23755e-01;
33  double c2 = 1.50247e+00;
34  double c3 = 3.03278e-01;
35  double C = -1 + c0*exp(c1*mu)*(1+c2*exp(c3*mu));
36 
37  double b0 = -3.33575e-01;
38  double b1 = 4.44856e-01;
39  double b2 = 1.91766e+00;
40  double b3 = 2.69423e+00;
41  double b4 = 1.06905e+00;
42  double B = (1/mu)*(b0 + b1*log10(mu) + b2*pow(log10(mu),2)
43  + b3*pow(log10(mu),3) + b4*pow(log10(mu),4));
44 
45  double a0 = 7.18248e-02;
46  double a1 = 1.89016e+00;
47  double a2 = 2.15651e-02;
48  double a3 = 2.30786e-02;
49  double A = exp(B*mu*0.015)*(a0/(exp(a1*(log10(mu)+a2))+1)+a3);
50 
51  double R = 0.01*D*( 4/(0.222+E)/(0.222+E) - 1/((0.22-z)*(z+E)) );
52  f = A * exp(-B*mu*(0.22-z)) * (1+C*exp(R));
53 
54  return f;
55 }
float float float z
double f[11][100]
const int mu
Definition: Constants.h:22
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:150
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double EvolutionECAL::LightCollectionEfficiencyWeighted ( double  z,
double  mu_ind 
)

Definition at line 126 of file EvolutionECAL.cc.

References funct::A, funct::C, alignmentValidation::c1, create_public_lumi_plots::exp, f, RPCpg::mu, funct::pow(), dttmaxenums::R, and detailsBasic3DVector::z.

Referenced by EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted(), and EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted2().

127 {
128  if(z<=0) return 0;
129  if(z>=1) return 0;
130  if(mu_ind<0) return 1;
131 
132  double mu = mu_ind + 0.7;
133  double lmu = log10(mu);
134 
135  double e0 = 6.91563e-02;
136  double e1 = 1.64406e+00;
137  double e2 = 6.42509e-01;
138  double E = e0/(1+exp(e1*(lmu-e2)));
139 
140  double d0 = 3.85334e-01;
141  double d1 = -1.04647e-02;
142  double D = d0*exp(d1*mu);
143 
144  double c0 = 3.77629e-01;
145  double c1 = -3.23755e-01;
146  double c2 = 1.50247e+00;
147  double c3 = 3.03278e-01;
148  double C = -1 + c0*exp(c1*mu)*(1+c2*exp(c3*mu));
149 
150  double b0 = -3.33575e-01;
151  double b1 = 4.44856e-01;
152  double b2 = 1.91766e+00;
153  double b3 = 2.69423e+00;
154  double b4 = 1.06905e+00;
155  double B = (1/mu)*(b0 + b1*lmu + b2*pow(lmu,2)
156  + b3*pow(lmu,3) + b4*pow(lmu,4));
157 
158  double a0 = 7.18248e-02;
159  double a1 = 1.89016e+00;
160  double a2 = 2.15651e-02;
161  double a3 = 2.30786e-02;
162  double A = exp(B*mu*0.015)*(a0/(exp(a1*(lmu+a2))+1)+a3);
163 
164  double R = 0.01*D*( 4/(0.222+E)/(0.222+E) - 1/((0.22*0.22)*(1.-z)*(z+E/0.22)) );
165 
166  // for undamaged crystal, mu0 = 0.7
167  double A0 = 0.0631452;
168  double B0 = -0.52267;
169  double C0 = -0.139646;
170  double D0 = 0.382522;
171  double E0 = 0.054473;
172  double R0 = 0.01*D0*( 4/(0.222+E0)/(0.222+E0) - 1/((0.22*0.22)*(1.-z)*(z+E0/0.22)) );
173 
174 
175  double f = A/A0 * exp(-(B*mu-B0*0.7)*0.22*(1.-z)) * (1+C*exp(R))/(1+C0*exp(R0));
176 
177  return f;
178 }
Divides< arg, void > D0
Definition: Factorize.h:143
float float float z
double f[11][100]
const int mu
Definition: Constants.h:22
DecomposeProduct< arg, typename Div::arg > D
Definition: Factorize.h:150
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double EvolutionECAL::NoiseFactorFE ( double  lumi,
double  eta 
)

Definition at line 375 of file EvolutionECAL.cc.

References DamageProfileEtaAPD(), mathSSE::sqrt(), and x.

Referenced by EnergyResolutionVsLumi::calcnoiseADC(), EnergyResolutionVsLumi::calcnoiseIncreaseADC(), and EnergyResolutionVsLumi::CalculateDegradation().

376 {
377  double x = fabs(eta);
378  if(x<1.497){
379  return sqrt( 1.0 + 0.495*0.03512*lumi*DamageProfileEtaAPD(eta));
380  }else{
381  return 1.0;
382  }
383 }
tuple lumi
Definition: fjr2json.py:35
T eta() const
T sqrt(T t)
Definition: SSEVec.h:48
Definition: DDAxes.h:10
double DamageProfileEtaAPD(double eta)
double EvolutionECAL::ResolutionConstantTermEM50GeV ( double  mu)

Definition at line 324 of file EvolutionECAL.cc.

References create_public_lumi_plots::exp, f, i, log, RPCpg::mu, and x.

Referenced by EnergyResolutionVsLumi::calcresolutitonConstantTerm(), and EnergyResolutionVsLumi::CalculateDegradation().

325 {
326 
327  double x = mu;
328  if( mu<=0.01 ) x=0.01;
329  if( mu>=200.0 ) x=200.0;
330 
331  double par[10] = { -6.21503e+00, 1.59759e+00, -4.75221e-02, -3.90299e-02, 3.97269e-03,
332  2.29574e-03, -1.05280e-04, -9.60963e-05, -1.29594e-06, 1.70850e-06 };
333 
334  double u = log(x);
335  double f = par[9];
336  for(int i=8; i>=0; i--) f = par[i] + f*u;
337  return exp(f);
338 
339 }
int i
Definition: DBlmapReader.cc:9
static std::vector< std::string > checklist log
double f[11][100]
const int mu
Definition: Constants.h:22
Definition: DDAxes.h:10