eic-smear  1.0.3
A collection of ROOT classes for Monte Carlo events and a fast-smearing code simulating detector effects for the Electron-Ion Collider task force
ZEUSDetector.cpp
Go to the documentation of this file.
1 
14 double etaToTheta(const double eta) {
15  TLorentzVector v;
16  v.SetPtEtaPhiM(1., eta, 0., 0.);
17  return v.Theta();
18 }
19 
23 double degreesToRadians(double degrees) {
24  return degrees / 180. * TMath::Pi();
25 }
26 
35  // The central calorimeter, providing both electromagnetic and hadronic
36  // calorimetry, but with different resolutions.
37  // Note that this excludes the forward calorimeter.
38  Smear::Device emCal(Smear::kE, "0.18*sqrt(E)", Smear::kElectromagnetic);
39  Smear::Device hCal(Smear::kE, "0.35*sqrt(E)", Smear::kHadronic);
40  // Calorimeter acceptance is +/- 4 in pseudorapidity.
41  // Note that 4 is before -4 as eta-max corresponds to theta-min.
43  emCal.Accept.AddZone(cal);
44  hCal.Accept.AddZone(cal);
45  // ZEUS tracking acceptance covers 15 to 164 degrees in polar angle.
46  // This is approximately +/- 2 in pseudorapidity.
47  // Define with two volumes, for momentum and theta.
48  Smear::Device theta(Smear::kTheta, "0.0005*P + 0.003");
49  Smear::Device momentum(Smear::kP, "0.0085*P + 0.0025*P*P");
51  degreesToRadians(164.));
52  theta.Accept.AddZone(tracking);
53  momentum.Accept.AddZone(tracking);
54  // The acceptance of the Roman pots is a complicated function of
55  // angle and momentum, and not easy to define using the available
56  // Acceptance implementation. For completeness the parameterisations
57  // are included below in case they are of use, and users wish to
58  // define their own acceptance some way.
59  // Smear::Device romanTran(Smear::kPt, "0.005");
60  // Smear::Device romanLong(Smear::kPz, "0.005 * pZ");
61  // There is no parameterisation for phi, so add a dummy device:
63  // Add all the devices to the detector.
64  Smear::Detector zeus;
65  zeus.AddDevice(emCal);
66  zeus.AddDevice(hCal);
67  zeus.AddDevice(theta);
68  zeus.AddDevice(momentum);
69  zeus.AddDevice(phi);
70  // zeus.AddDevice(romanTran);
71  // zeus.AddDevice(romanLong);
72  zeus.SetEventKinematicsCalculator("NM JB DA");
73  return zeus;
74 }
BuildDetector
Smear::Detector BuildDetector()
Smearing parameterisations for the ZEUS detector.
Definition: ZEUSDetector.cpp:34
Smear::kE
@ kE
Definition: Smear.h:44
Smear::Smearer::Accept
Acceptance Accept
Definition: Smearer.h:50
Smear::kTheta
@ kTheta
Definition: Smear.h:44
etaToTheta
double etaToTheta(const double eta)
Convert pseudorapidity (eta) to polar angle (theta) in radians.
Definition: ZEUSDetector.cpp:14
Smear::Acceptance::Zone
A single contiguous region of acceptance.
Definition: Acceptance.h:62
Smear::Detector
The detector structure.
Definition: Detector.h:44
Smear::kPhi
@ kPhi
Definition: Smear.h:44
Smear::kP
@ kP
Definition: Smear.h:44
Smear::Device
Performs smearing of a single kinematic variable according to a simple expression defined via a strin...
Definition: Device.h:44
Smear::Detector::SetEventKinematicsCalculator
void SetEventKinematicsCalculator(TString)
Set the method for calculating event kinematics if FillEventKinematics is used.
Definition: Detector.cxx:67
Smear::Detector::AddDevice
void AddDevice(Smearer &device)
Adds a copy of the smearing device to this detector.
Definition: Detector.cxx:63
Smear::Acceptance::AddZone
void AddZone(const Zone &)
Add a new zone with user-specified coverage.
Definition: Acceptance.cxx:26
degreesToRadians
double degreesToRadians(double degrees)
Convert and angle in degrees to one in radians.
Definition: ZEUSDetector.cpp:23
Smear::kHadronic
@ kHadronic
Definition: Smear.h:49
Smear::kElectromagnetic
@ kElectromagnetic
Definition: Smear.h:49