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
|
#ifndef HDRShower_H
#define HDRShower_H
//FastSimulation Headers
#include "FastSimulation/ShowerDevelopment/interface/HDShowerParametrization.h"
#include <vector>
/**
* \date: 09-Feb-2005
* new hadronic shower simulation by V.Popov
*/
#define NEnergyScan 7
// 7 lambda
#define R_range 100
class EcalHitMaker;
class HcalHitMaker;
class RandomEngineAndDistribution;
class HDRShower {
public:
HDRShower(const RandomEngineAndDistribution* engine,
HDShowerParametrization* myParam,
EcalHitMaker* myGrid,
HcalHitMaker* myHcalHitMaker,
int onECAL,
double epart);
virtual ~HDRShower() { ; }
bool computeShower();
bool setHit(float espot, float theta);
void thetaFunction(int nthetaStep);
float getR();
void setFuncParam();
private:
// Input
HDShowerParametrization* theParam;
EcalHitMaker* theGrid;
HcalHitMaker* theHcalHitMaker;
int onEcal;
double e; // Input energy to distribute
private:
// const ECALProperties* theECALproperties;
// const HCALProperties* theHCALproperties;
double lambdaEM, lambdaHD, x0EM, x0HD;
double depthStart;
float eHDspot;
float EsCut;
float EcalShift;
int nthetaStep;
float thetaStep;
float depthECAL, depthGAP, maxDepth;
std::vector<int> thetaSpots;
std::vector<float> elastspot;
float rpdf[R_range];
bool qstatus;
float decal;
float EgridTable[NEnergyScan];
float Theta1amp[NEnergyScan];
float Theta1ampSig[NEnergyScan];
float Theta1Lambda[NEnergyScan];
float Theta1LambdaSig[NEnergyScan];
float ThetaLam21[NEnergyScan];
float ThetaLam21Sig[NEnergyScan];
// The famos random engine
const RandomEngineAndDistribution* random;
};
#endif
|