1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
#ifndef HDShowerParametrization_H
#define HDShowerParametrization_H
#include "FastSimulation/CalorimeterProperties/interface/ECALProperties.h"
#include "FastSimulation/CalorimeterProperties/interface/HCALProperties.h"
#include "FastSimulation/ShowerDevelopment/interface/HSParameters.h"
/**
* Hadronic Shower parametrization utilities according to
* G. Grindhammer et al. in a way implemeted in CMSJET
*
* \author Salavat Abdullin
* \date: 20.10.2004
*/
class HDShowerParametrization {
public:
HDShowerParametrization(const ECALProperties* ecal, const HCALProperties* hcal, const HSParameters* hadronshower)
: theECAL(ecal), theHCAL(hcal), theHSParameters(hadronshower) {}
virtual ~HDShowerParametrization() {}
const ECALProperties* ecalProperties() const { return theECAL; }
const HCALProperties* hcalProperties() const { return theHCAL; }
const HSParameters* hsParameters() const { return theHSParameters; }
// to distinguish between low- and high-energy case
void setCase(int choice) {
if (choice < 1 || choice > 2)
theCase = 2;
else
theCase = choice;
}
// Minimal energy for the parameters calculation ( e < emin)
double emin() const { return 2.; }
// First range for the parameters calculation ( emin < e < mid)
double emid() const { return 10.; }
// Second range for the parameters calculation ( emid < e < emax)
double emax() const { return 500.; }
double e1() const { return 0.35; }
double e2() const { return 0.09; }
double alpe1() const {
if (theCase == 1)
return 1.08;
else
return 1.30;
}
double alpe2() const {
if (theCase == 1)
return 0.24;
else
return 0.255;
}
double bete1() const {
if (theCase == 1)
return 0.478;
else
return 0.289;
}
double bete2() const {
if (theCase == 1)
return 0.135;
else
return 0.010;
}
double alph1() const {
if (theCase == 1)
return 1.17;
else
return 0.38;
}
double alph2() const {
if (theCase == 1)
return 0.21;
else
return 0.23;
}
double beth1() const {
if (theCase == 1)
return 2.10;
else
return 0.83;
}
double beth2() const {
if (theCase == 1)
return 0.72;
else
return 0.049;
}
double part1() const {
if (theCase == 1)
return 0.751;
else
return 0.509;
}
double part2() const {
if (theCase == 1)
return 0.177;
else
return 0.021;
}
double r1() const { return 0.0124; }
double r2() const { return 0.359; }
double r3() const { return 0.0511; }
private:
const ECALProperties* theECAL;
const HCALProperties* theHCAL;
const HSParameters* theHSParameters;
int theCase;
};
#endif
|