CMS 3D CMS Logo

EnergyResolutionVsLumi.cc
Go to the documentation of this file.
1 #include <string>
2 #include <vector>
8 
10  m_lumi = 0;
11  m_instlumi = 0;
12 }
13 
15 
18 
19  result.eta = eta;
20  double totLumi = m_lumi;
21  double instLumi = m_instlumi;
22 
24 
25  // Index of induced absorption due to EM damages in PWO4
26  result.muEM = model.InducedAbsorptionEM(instLumi, eta);
27 
28  // Index of induced absorption due to hadron damages in PWO4
29  result.muHD = model.InducedAbsorptionHadronic(totLumi, eta);
30 
31  // Average degradation of amplitude due to transparency change
32  result.ampDropTransparency = model.DegradationMeanEM50GeV(result.muEM + result.muHD);
33 
34  // Average degradation of amplitude due to photo-detector aging
35  result.ampDropPhotoDetector = model.AgingVPT(instLumi, totLumi, eta);
36 
37  result.ampDropTotal = result.ampDropTransparency * result.ampDropPhotoDetector;
38 
39  // Noise increase in ADC counts due to photo-detector and front-end
40  result.noiseIncreaseADC = model.NoiseFactorFE(totLumi, eta);
41 
42  // Resolution degradation due to LY non-uniformity caused by transparency loss
43  result.resolutitonConstantTerm = model.ResolutionConstantTermEM50GeV(result.muEM + result.muHD);
44 
45  return result;
46 }
47 
49  double instLumi = m_instlumi;
51  double result = model.InducedAbsorptionEM(instLumi, eta);
52  return result;
53 }
54 
56  double totLumi = m_lumi;
58  double result = model.InducedAbsorptionHadronic(totLumi, eta);
59  return result;
60 }
61 
63  for (int iEta = 1; iEta <= EBDetId::MAX_IETA; ++iEta) {
64  if (iEta == 0)
65  continue;
66 
67  double eta = EBDetId::approxEta(EBDetId(iEta, 1));
68  eta = std::abs(eta);
69  double r = calcmuTot(eta);
70 
71  mu_eta[iEta] = r;
72  vpt_eta[iEta] = 1.0;
73  }
74 
75  for (int iX = EEDetId::IX_MIN; iX <= EEDetId::IX_MAX; ++iX) {
76  for (int iY = EEDetId::IY_MIN; iY <= EEDetId::IY_MAX; ++iY) {
77  if (EEDetId::validDetId(iX, iY, 1)) {
78  EEDetId eedetidpos(iX, iY, 1);
79  double eta = -log(tan(0.5 * atan(sqrt((iX - 50.0) * (iX - 50.0) + (iY - 50.0) * (iY - 50.0)) * 2.98 / 328.)));
80  eta = std::abs(eta);
81  double r = calcmuTot(eta);
82  double v = calcampDropPhotoDetector(eta);
83 
84  mu_eta[EBDetId::MAX_IETA + iX + iY * (EEDetId::IX_MAX)] = r;
85  vpt_eta[EBDetId::MAX_IETA + iX + iY * (EEDetId::IX_MAX)] = v;
86  //std::cout<<"eta/mu/vpt"<<eta<<"/"<<r<<"/"<<v<<std::endl;
87  }
88  }
89  }
90 }
91 
93  double v = 1.0;
94  double muTot = 0;
95  if (id.subdetId() == EcalBarrel) {
96  EBDetId ebId(id);
97  int ieta = std::abs(ebId.ieta());
98  muTot = mu_eta[ieta];
99 
100  } else if (id.subdetId() == EcalEndcap) {
101  EEDetId eeId(id);
102  int ix = eeId.ix();
103  int iy = eeId.iy();
104 
105  muTot = mu_eta[EBDetId::MAX_IETA + ix + iy * (EEDetId::IX_MAX)];
106  v = vpt_eta[EBDetId::MAX_IETA + ix + iy * (EEDetId::IX_MAX)];
107  } else {
108  muTot = 0;
109  }
110  double zcor = z;
112  if (z < 0.02) {
113  zcor = 0.02;
114  } else if (z > 0.98) {
115  zcor = 0.98;
116  }
117 
118  double result = model.LightCollectionEfficiencyWeighted(zcor, muTot) * v;
119 
120  return result;
121 }
122 
124  if (mu_ind < 0)
125  mu_ind = this->calcmuTot(eta);
126  double v = this->calcampDropPhotoDetector(eta);
128  double result = model.LightCollectionEfficiencyWeighted(z, mu_ind) * v;
129  return result;
130 }
131 
133  double totLumi = m_lumi;
134  double instLumi = m_instlumi;
136  double muEM = model.InducedAbsorptionEM(instLumi, eta);
137  double muH = model.InducedAbsorptionHadronic(totLumi, eta);
138  double result = muEM + muH;
139  return result;
140 }
141 
143  double muEM = this->calcmuEM(eta);
144  double muHD = this->calcmuHD(eta);
146  double result = model.DegradationMeanEM50GeV(muEM + muHD);
147  return result;
148 }
149 
151  double instLumi = m_instlumi;
152  double totLumi = m_lumi;
154  double result = model.AgingVPT(instLumi, totLumi, eta);
155  return result;
156 }
157 
159  double tra = this->calcampDropTransparency(eta);
160  double pho = this->calcampDropPhotoDetector(eta);
161  double result = tra * pho;
162  return result;
163 }
164 
166  double totLumi = m_lumi;
168  double result = model.NoiseFactorFE(totLumi, eta);
169  return result;
170  // noise increase in ADC
171 }
172 
174  double totLumi = m_lumi;
175  double Nadc = 1.1;
176  double result = 1.0;
178  if (std::abs(eta) < 1.497) {
179  Nadc = 1.1;
180  result = model.NoiseFactorFE(totLumi, eta) * Nadc;
181  } else {
182  Nadc = 2.0;
183  result = Nadc;
184  // endcaps no increase in ADC
185  }
186  return result;
187 }
188 
190  double muEM = this->calcmuEM(eta);
191  double muHD = this->calcmuHD(eta);
193  double result = model.ResolutionConstantTermEM50GeV(muEM + muHD);
194  return result;
195 }
196 
197 double EnergyResolutionVsLumi::Resolution(double eta, double ene) {
198  // Initial parameters for ECAL resolution
199  double S;
200  double Nadc;
201  double adc2GeV;
202  double C;
203  if (eta < 1.497) {
204  S = 0.028; // CMS note 2006/148 (EB test beam)
205  Nadc = 1.1;
206  adc2GeV = 0.039;
207  C = 0.003;
208  } else {
209  S = 0.052; // CMS DN 2009/002
210  Nadc = 2.0;
211  adc2GeV = 0.069;
212  C = 0.004;
213  }
214 
216 
217  // adjust resolution parameters
218  S /= sqrt(d.ampDropTotal);
219  Nadc *= d.noiseIncreaseADC;
220  adc2GeV /= d.ampDropTotal;
221  double N = Nadc * adc2GeV * 3.0; // 3x3 noise in GeV
222  C = sqrt(C * C + d.resolutitonConstantTerm * d.resolutitonConstantTerm);
223 
224  return sqrt(S * S / ene + N * N / ene / ene + C * C);
225 }
226 /*
227 void EnergyResolutionVsLumi::Decomposition()
228 {
229  double eta = 2.2;
230  m_instlumi = 5.0e+34;
231  m_lumi = 3000.0;
232 
233  DegradationAtEta d = this->CalculateDegradation(eta);
234 
235  // Initial parameters for ECAL resolution
236  double S;
237  double Nadc;
238  double adc2GeV;
239  double C;
240  if(eta<1.497){
241  S = 0.028; // CMS note 2006/148 (EB test beam)
242  Nadc = 1.1;
243  adc2GeV = 0.039;
244  C = 0.003;
245  }else{
246  S = 0.052; // CMS DN 2009/002
247  Nadc = 2.0;
248  adc2GeV = 0.069;
249  C = 0.0038;
250  }
251 
252  // adjust resolution parameters
253  S /= sqrt(d.ampDropTotal);
254  Nadc *= d.noiseIncreaseADC;
255  adc2GeV /= d.ampDropTotal;
256  // double N = Nadc*adc2GeV*3.0; // 3x3 noise in GeV
257  C = sqrt(C*C + d.resolutitonConstantTerm*d.resolutitonConstantTerm);
258 
259  for(double ene=1.0; ene<1e+3; ene*=1.1){
260  // this is the resolution
261  double res = sqrt(S*S/ene + N*N/ene/ene + C*C);
262  double factor = 1.0;
263  factor = sin(2.0*atan(exp(-1.0*eta)));
264  }
265 }
266 */
EnergyResolutionVsLumi::calcampDropTransparency
double calcampDropTransparency(double eta)
Definition: EnergyResolutionVsLumi.cc:142
EnergyResolutionVsLumi::m_instlumi
double m_instlumi
Definition: EnergyResolutionVsLumi.h:67
EBDetId::ieta
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted2
double calcLightCollectionEfficiencyWeighted2(double eta, double z, double mu_ind=-1.0)
Definition: EnergyResolutionVsLumi.cc:123
EBDetId::approxEta
float approxEta() const
Definition: EBDetId.h:102
detailsBasic3DVector::z
float float float z
Definition: extBasic3DVector.h:14
EnergyResolutionVsLumi::calcmuTot
void calcmuTot()
Definition: EnergyResolutionVsLumi.cc:62
EvolutionECAL.h
EBDetId
Definition: EBDetId.h:17
EnergyResolutionVsLumi::CalculateDegradation
DegradationAtEta CalculateDegradation(double eta)
Definition: EnergyResolutionVsLumi.cc:16
EnergyResolutionVsLumi::EnergyResolutionVsLumi
EnergyResolutionVsLumi()
Definition: EnergyResolutionVsLumi.cc:9
EnergyResolutionVsLumi::m_lumi
double m_lumi
Definition: EnergyResolutionVsLumi.h:66
EBDetId.h
EEDetId.h
EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted
double calcLightCollectionEfficiencyWeighted(DetId id, double z)
Definition: EnergyResolutionVsLumi.cc:92
EEDetId::IX_MIN
static const int IX_MIN
Definition: EEDetId.h:290
EnergyResolutionVsLumi.h
EEDetId::IY_MIN
static const int IY_MIN
Definition: EEDetId.h:294
EnergyResolutionVsLumi::calcmuHD
double calcmuHD(double eta)
Definition: EnergyResolutionVsLumi.cc:55
findQualityFiles.v
v
Definition: findQualityFiles.py:179
EEDetId::ix
int ix() const
Definition: EEDetId.h:77
EcalBarrel
Definition: EcalSubdetector.h:10
ReggeGribovPartonMC_EposLHC_2760GeV_PbPb_cfi.model
model
Definition: ReggeGribovPartonMC_EposLHC_2760GeV_PbPb_cfi.py:11
DetId
Definition: DetId.h:17
EnergyResolutionVsLumi::calcampDropTotal
double calcampDropTotal(double eta)
Definition: EnergyResolutionVsLumi.cc:158
PVValHelper::eta
Definition: PVValidationHelpers.h:70
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DDAxes::z
N
#define N
Definition: blowfish.cc:9
EnergyResolutionVsLumi::vpt_eta
double vpt_eta[10085]
Definition: EnergyResolutionVsLumi.h:69
EEDetId::IY_MAX
static const int IY_MAX
Definition: EEDetId.h:302
EnergyResolutionVsLumi::Resolution
double Resolution(double eta, double ene)
Definition: EnergyResolutionVsLumi.cc:197
EEDetId
Definition: EEDetId.h:14
EnergyResolutionVsLumi::mu_eta
double mu_eta[10085]
Definition: EnergyResolutionVsLumi.h:68
EnergyResolutionVsLumi::calcnoiseADC
double calcnoiseADC(double eta)
Definition: EnergyResolutionVsLumi.cc:173
EnergyResolutionVsLumi::calcmuEM
double calcmuEM(double eta)
Definition: EnergyResolutionVsLumi.cc:48
EcalSubdetector.h
EcalEndcap
Definition: EcalSubdetector.h:10
S
double S(const TLorentzVector &, const TLorentzVector &)
Definition: Particle.cc:97
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
EEDetId::IX_MAX
static const int IX_MAX
Definition: EEDetId.h:298
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
EnergyResolutionVsLumi::~EnergyResolutionVsLumi
virtual ~EnergyResolutionVsLumi()
Definition: EnergyResolutionVsLumi.cc:14
muonGEMDigis_cfi.instLumi
instLumi
Definition: muonGEMDigis_cfi.py:10
EEDetId::iy
int iy() const
Definition: EEDetId.h:83
alignCSCRings.r
r
Definition: alignCSCRings.py:93
EvolutionECAL
Definition: EvolutionECAL.h:23
EnergyResolutionVsLumi::calcampDropPhotoDetector
double calcampDropPhotoDetector(double eta)
Definition: EnergyResolutionVsLumi.cc:150
gen::C
C
Definition: PomwigHadronizer.cc:78
EnergyResolutionVsLumi::calcresolutitonConstantTerm
double calcresolutitonConstantTerm(double eta)
Definition: EnergyResolutionVsLumi.cc:189
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
S
Definition: CSCDBL1TPParametersExtended.h:16
EEDetId::validDetId
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.h:248
L1TowerCalibrationProducer_cfi.iEta
iEta
Definition: L1TowerCalibrationProducer_cfi.py:60
ztail.d
d
Definition: ztail.py:151
EnergyResolutionVsLumi::DegradationAtEta
Definition: EnergyResolutionVsLumi.h:30
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
EBDetId::MAX_IETA
static const int MAX_IETA
Definition: EBDetId.h:136
EnergyResolutionVsLumi::calcnoiseIncreaseADC
double calcnoiseIncreaseADC(double eta)
Definition: EnergyResolutionVsLumi.cc:165