Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FastSim: New correction coefficients for HF 81X #13462

Merged
merged 1 commit into from Feb 26, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 5 additions & 3 deletions FastSimulation/Calorimetry/interface/HCALResponse.h
Expand Up @@ -45,7 +45,8 @@ class HCALResponse

// correct HF response for SL
void correctHF(double e, int type);
vec1 & getCorrHF() {return corrHF;}
vec1 & getCorrHFem() {return corrHFem;}
vec1 & getCorrHFhad() {return corrHFhad;}

private:

Expand Down Expand Up @@ -118,8 +119,9 @@ class HCALResponse
// HF correction for SL
int maxEta, maxEne;
vec1 energyHF;
vec1 corrHFg, corrHFh;
vec1 corrHF;
vec2 corrHFgEm, corrHFgHad;
vec2 corrHFhEm, corrHFhHad;
vec1 corrHFem, corrHFhad;
};
#endif

228 changes: 194 additions & 34 deletions FastSimulation/Calorimetry/python/HcalResponse_cfi.py
Expand Up @@ -1080,40 +1080,200 @@

# HF correction for SL
maxEta = cms.int32(13),
maxEne = cms.int32(13),
energyHF = cms.vdouble(1.0, 2.5, 3.0, 4.0, 5.0, 5.5, 10.0, 20.0, 50.0, 100.0, 200.0, 500.0, 1000.0),
corrHFg = cms.vdouble(
0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
1.125, 1.077, 1.618, 1.236, 1.082, 0.788, 0.882, 1.129, 1.011, 0.989, 0.657, 0.725, 0.658,
1.125, 1.077, 1.618, 1.236, 1.082, 0.788, 0.882, 1.129, 1.011, 0.989, 0.657, 0.725, 0.658,
1.125, 1.077, 1.618, 1.236, 1.082, 0.788, 0.882, 1.129, 1.011, 0.989, 0.657, 0.725, 0.658,
#
1.125, 1.077, 1.618, 1.236, 1.082, 0.788, 0.882, 1.129, 1.011, 0.989, 0.657, 0.725, 0.658,
4.250, 0.868, 1.022, 0.951, 0.896, 1.025, 1.049, 1.072, 1.038, 0.997, 0.822, 0.670, 0.675,
4.250, 0.868, 1.022, 0.951, 0.896, 1.025, 1.049, 1.072, 1.038, 0.997, 0.822, 0.670, 0.675,
5.001, 0.810, 0.995, 0.895, 0.973, 1.050, 0.981, 1.030, 1.042, 0.962, 0.857, 0.675, 0.710,
1.315, 0.865, 0.970, 0.912, 0.980, 1.006, 1.001, 1.006, 0.985, 0.970, 0.868, 0.667, 0.782,
1.254, 0.875, 0.998, 0.908, 0.979, 1.009, 0.993, 1.004, 0.998, 0.942, 0.899, 0.672, 0.789,
1.668, 0.886, 0.997, 0.930, 0.977, 0.993, 0.945, 0.985, 0.956, 0.934, 0.904, 0.676, 0.780,
1.707, 0.928, 0.964, 0.888, 0.984, 0.974, 0.938, 0.950, 0.961, 0.894, 0.861, 0.671, 0.792,
1.803, 0.933, 0.954, 0.913, 0.985, 0.966, 0.975, 0.972, 0.972, 0.921, 0.897, 0.662, 0.811
),
corrHFh = cms.vdouble(
0.00, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
22.60, 2.000, 1.992, 1.162, 0.995, 1.294, 1.026, 0.847, 0.926, 0.982, 0.955, 0.947, 2.395,
22.60, 2.000, 1.992, 1.162, 0.995, 1.294, 1.026, 0.847, 0.926, 0.982, 0.955, 0.947, 2.395,
22.60, 10.484, 1.992, 1.162, 0.995, 1.294, 1.026, 0.847, 0.926, 0.982, 0.955, 0.947, 2.395,
#
22.60, 10.484, 1.992, 1.162, 0.995, 1.294, 1.026, 0.847, 0.926, 0.982, 0.955, 0.947, 2.395,
5.825, 1.198, 1.109, 1.072, 1.182, 0.970, 1.030, 0.946, 0.854, 0.777, 0.746, 0.637, 0.753,
5.825, 1.198, 1.109, 1.072, 1.182, 0.970, 1.030, 0.946, 0.854, 0.777, 0.746, 0.637, 0.753,
2.132, 0.888, 0.987, 1.153, 1.074, 0.970, 0.986, 0.939, 0.904, 0.823, 0.711, 0.687, 0.837,
1.401, 0.875, 1.008, 1.041, 1.019, 0.905, 0.963, 0.968, 0.898, 0.838, 0.737, 0.670, 0.824,
1.222, 0.875, 0.952, 0.966, 0.980, 0.967, 0.920, 0.912, 0.897, 0.837, 0.794, 0.678, 0.833,
1.113, 0.804, 0.973, 0.957, 0.955, 0.948, 1.002, 0.968, 0.946, 0.897, 0.786, 0.697, 0.843,
1.198, 0.833, 0.913, 0.934, 0.984, 0.939, 0.915, 0.929, 0.979, 0.918, 0.882, 0.694, 0.887,
1.022, 0.797, 0.977, 0.915, 0.968, 0.890, 0.960, 0.937, 0.950, 0.943, 0.812, 0.704, 0.904
),
maxEne = cms.int32(23),
energyHF = cms.vdouble(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 15.0, 20.0, 35.0, 50.0, 75.0, 100.0, 150.0, 200.0, 350.0, 500.0, 750.0, 1000.0),
corrHFgEm = cms.vdouble(*[
# photon 1 GeV Em
0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
# photon 2 GeV Em
10.62, 1.705, 1.674, 1.723, 1.796, 1.996, 1.776, 1.734, 2.290, 2.228, 2.740, 1.650, 0.502,
# photon 3 GeV Em
4.640, 1.652, 1.720, 1.900, 1.920, 1.514, 1.310, 1.197, 1.214, 1.340, 0.770, 2.560, 0.621,
# photon 4 GeV Em
15.62, 1.755, 1.670, 1.330, 1.095, 1.185, 0.975, 1.026, 1.230, 1.349, 1.962, 5.546, 0.704,
# photon 5 GeV Em
3.262, 1.883, 1.430, 0.907, 0.987, 1.022, 0.998, 1.112, 1.335, 1.195, 1.086, 3.600, 0.732,
# photon 6 GeV Em
11.11, 1.835, 1.115, 1.040, 1.047, 1.092, 1.081, 1.066, 1.319, 1.135, 0.886, 0.980, 0.764,
# photon 7 GeV Em
5.230, 1.688, 0.961, 1.064, 0.955, 1.110, 1.118, 1.058, 1.238, 1.147, 0.953, 0.090, 0.693,
# photon 8 GeV Em
6.615, 1.380, 0.976, 0.978, 1.038, 1.064, 1.065, 1.064, 1.170, 1.140, 0.963, 0.750, 0.664,
# photon 9 GeV Em
5.000, 1.194, 0.968, 0.927, 0.997, 1.088, 1.034, 1.016, 1.141, 1.136, 0.996, 0.732, 0.640,
# photon 10 GeV Em
6.922, 1.135, 0.918, 0.940, 1.097, 1.108, 1.067, 1.025, 1.183, 1.036, 0.926, 0.550, 0.657,
# photon 12 GeV Em
5.234, 1.000, 0.978, 0.926, 1.000, 1.091, 1.014, 1.043, 1.116, 1.078, 0.931, 0.578, 0.680,
# photon 15 GeV Em
3.125, 0.948, 0.992, 0.985, 1.048, 1.124, 0.931, 1.062, 1.111, 1.023, 0.830, 0.695, 0.711,
# photon 20 GeV Em
4.839, 0.871, 1.014, 0.928, 1.098, 1.070, 0.984, 1.108, 1.065, 1.023, 0.973, 0.605, 0.762,
# photon 35 GeV Em
1.239, 0.939, 1.084, 0.976, 1.039, 1.081, 0.950, 1.056, 1.078, 1.092, 0.967, 0.757, 0.786,
# photon 50 GeV Em
1.203, 0.929, 1.007, 0.989, 1.045, 1.023, 0.932, 1.050, 1.063, 1.038, 0.995, 0.620, 0.833,
# photon 75 GeV Em
2.560, 0.935, 1.078, 0.977, 0.978, 1.070, 0.905, 1.075, 0.936, 1.035, 0.863, 0.757, 0.882,
# photon 100 GeV Em
1.184, 0.940, 1.031, 0.925, 1.047, 1.055, 0.970, 1.047, 0.969, 0.976, 1.037, 0.773, 0.895,
# photon 150 GeV Em
2.350, 1.142, 0.993, 1.125, 0.982, 0.961, 0.905, 1.064, 0.862, 1.260, 0.793, 0.772, 0.833,
# photon 200 GeV Em
2.440, 1.148, 0.992, 1.023, 1.007, 0.969, 0.913, 1.123, 0.863, 1.217, 0.994, 0.808, 0.810,
# photon 350 GeV Em
1.945, 1.138, 1.024, 0.970, 0.982, 1.039, 0.955, 0.996, 0.938, 1.185, 0.930, 0.730, 0.843,
# photon 500 GeV Em
1.305, 1.163, 1.108, 1.064, 1.089, 0.930, 0.919, 1.023, 0.949, 0.910, 0.818, 0.772, 0.845,
# photon 750 GeV Em
2.500, 1.102, 1.023, 0.994, 1.064, 1.105, 1.016, 0.970, 0.966, 1.030, 1.050, 0.749, 0.884,
# photon 1000 GeV Em
2.665, 0.930, 1.105, 0.800, 1.031, 0.890, 1.109, 0.826, 1.021, 0.755, 1.169, 1.042, 1.264
]),
corrHFgHad = cms.vdouble(*[
# photon 1 GeV Had
0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
# photon 2 GeV Had
10.00, 1.330, 1.258, 1.645, 0.833, 1.630, 1.010, 1.250, 1.534, 2.750, 1.850, 0.605, 0.340,
# photon 3 GeV Had
2.500, 1.210, 1.382, 1.638, 1.582, 1.492, 1.743, 1.367, 1.166, 0.544, 0.795, 0.100, 0.503,
# photon 4 GeV Had
10.83, 1.427, 1.487, 1.230, 1.188, 1.280, 0.730, 0.788, 1.325, 1.385, 1.655, 1.430, 0.528,
# photon 5 GeV Had
2.690, 1.327, 1.075, 0.688, 0.836, 0.940, 0.967, 1.198, 1.311, 0.845, 0.963, 1.705, 0.508,
# photon 6 GeV Had
3.000, 1.327, 0.835, 0.716, 0.955, 1.175, 0.966, 1.058, 1.280, 0.878, 0.910, 0.608, 0.461,
# photon 7 GeV Had
0.777, 0.883, 0.722, 0.750, 0.825, 0.950, 0.987, 0.873, 1.165, 0.790, 0.683, 0.687, 0.367,
# photon 8 GeV Had
5.235, 1.024, 0.760, 0.738, 0.878, 0.938, 0.895, 0.953, 0.899, 0.843, 0.588, 0.482, 0.387,
# photon 9 GeV Had
1.093, 0.926, 0.665, 0.647, 0.754, 1.006, 0.808, 1.062, 0.826, 0.847, 0.640, 0.245, 0.292,
# photon 10 GeV Had
3.700, 0.733, 0.833, 0.541, 0.892, 1.065, 0.934, 0.901, 0.985, 0.760, 0.530, 0.608, 0.351,
# photon 12 GeV Had
1.246, 0.602, 0.860, 0.761, 0.754, 0.870, 0.890, 0.945, 0.994, 0.835, 0.700, 0.351, 0.353,
# photon 15 GeV Had
1.116, 0.580, 0.829, 0.641, 0.918, 0.968, 0.800, 0.960, 0.938, 0.714, 0.430, 0.401, 0.317,
# photon 20 GeV Had
1.390, 0.624, 0.825, 0.582, 0.900, 1.057, 0.800, 0.930, 1.012, 0.598, 0.764, 0.445, 0.369,
# photon 35 GeV Had
0.792, 0.613, 0.784, 0.676, 0.862, 0.930, 0.819, 0.948, 0.918, 0.896, 0.495, 0.396, 0.329,
# photon 50 GeV Had
0.898, 0.579, 0.813, 0.651, 0.799, 0.957, 0.860, 0.913, 0.998, 0.699, 0.646, 0.483, 0.363,
# photon 75 GeV Had
1.230, 0.602, 0.828, 0.627, 0.830, 1.021, 0.812, 0.922, 0.866, 0.773, 0.608, 0.452, 0.378,
# photon 100 GeV Had
0.504, 0.572, 0.792, 0.618, 0.795, 0.951, 0.837, 0.955, 0.823, 0.718, 0.660, 0.420, 0.382,
# photon 150 GeV Had
1.580, 0.705, 0.781, 0.783, 0.798, 0.901, 0.773, 0.988, 0.862, 0.877, 0.494, 0.475, 0.378,
# photon 200 GeV Had
1.500, 0.658, 0.807, 0.714, 0.828, 0.917, 0.794, 0.967, 0.815, 0.874, 0.740, 0.582, 0.368,
# photon 350 GeV Had
1.011, 0.683, 0.820, 0.634, 0.808, 1.055, 0.863, 0.950, 0.820, 0.821, 0.570, 0.386, 0.369,
# photon 500 GeV Had
1.397, 0.659, 0.866, 0.782, 0.909, 1.014, 0.792, 0.885, 0.908, 0.818, 0.620, 0.531, 0.406,
# photon 750 GeV Had
1.115, 0.730, 0.800, 0.674, 0.827, 1.016, 0.885, 0.935, 0.845, 0.731, 0.675, 0.480, 0.449,
# photon 1000 GeV Had
2.280, 0.570, 0.840, 0.600, 0.787, 0.951, 0.915, 0.813, 1.025, 0.510, 0.876, 0.694, 0.708
]),
corrHFhEm = cms.vdouble(*[
# pi 1 GeV Em
0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
# pi 2 GeV Em
1.000, 0.100, 0.520, 0.950, 0.800, 0.460, 0.700, 0.250, 0.200, 0.200, 0.250, 0.010, 0.700,
# pi 3 GeV Em
1.000, 0.100, 0.520, 0.950, 0.800, 0.460, 0.700, 0.250, 0.200, 0.200, 0.250, 0.010, 0.700,
# pi 4 GeV Em
1.000, 0.100, 0.520, 0.950, 0.800, 0.460, 0.700, 0.250, 0.200, 0.200, 0.250, 0.010, 0.700,
# pi 5 GeV Em
68.66, 12.19, 2.403, 1.175, 1.160, 1.282, 1.172, 1.198, 1.135, 1.172, 1.252, 1.690, 4.926,
# pi 6 GeV Em
29.02, 4.190, 1.342, 1.110, 1.117, 1.241, 1.125, 1.081, 1.088, 1.148, 1.220, 1.588, 4.686,
# pi 7 GeV Em
7.920, 2.300, 1.037, 1.082, 1.130, 1.244, 1.129, 1.131, 1.164, 1.196, 1.248, 1.715, 2.723,
# pi 8 GeV Em
13.41, 1.356, 1.109, 1.052, 1.125, 1.246, 1.190, 1.125, 1.145, 1.192, 1.260, 1.522, 1.300,
# pi 9 GeV Em
4.570, 1.250, 1.042, 1.094, 1.100, 1.162, 1.157, 1.127, 1.167, 1.257, 1.297, 1.598, 1.222,
# pi 10 GeV Em
3.127, 1.089, 1.003, 1.100, 1.188, 1.233, 1.161, 1.067, 1.137, 1.228, 1.400, 1.504, 1.077,
# pi 12 GeV Em
0.475, 0.898, 1.055, 1.089, 1.128, 1.216, 1.085, 1.086, 1.198, 1.289, 1.439, 1.575, 1.028,
# pi 15 GeV Em
0.660, 0.809, 0.972, 1.053, 1.093, 1.130, 1.019, 1.165, 1.220, 1.177, 1.489, 1.537, 0.984,
# pi 20 GeV Em
0.000, 0.696, 0.958, 0.947, 1.036, 1.078, 0.982, 1.058, 1.205, 1.166, 1.470, 1.537, 0.941,
# pi 35 GeV Em
0.415, 0.712, 0.935, 0.927, 0.935, 0.964, 0.936, 1.010, 1.069, 1.121, 1.345, 1.380, 0.903,
# pi 50 GeV Em
0.408, 0.800, 0.958, 0.928, 0.936, 0.957, 0.878, 0.968, 1.015, 1.122, 1.275, 1.297, 0.920,
# pi 75 GeV Em
0.613, 0.827, 1.003, 0.908, 0.946, 0.991, 0.901, 0.988, 0.946, 1.006, 1.208, 1.231, 0.924,
# pi 100 GeV Em
0.800, 0.932, 0.975, 0.955, 0.976, 1.024, 0.929, 0.960, 0.907, 0.990, 1.193, 1.156, 0.920,
# pi 150 GeV Em
1.045, 1.000, 0.958, 1.087, 0.961, 0.955, 0.891, 0.950, 0.925, 1.074, 1.066, 1.068, 0.892,
# pi 200 GeV Em
1.188, 1.025, 1.031, 0.985, 0.995, 0.971, 0.896, 0.992, 0.894, 1.110, 0.991, 0.991, 0.820,
# pi 350 GeV Em
0.888, 1.012, 1.053, 0.937, 0.948, 1.032, 0.900, 0.994, 0.925, 1.200, 0.907, 0.802, 0.818,
# pi 500 GeV Em
0.773, 1.092, 1.090, 1.022, 1.050, 0.992, 0.887, 1.015, 0.983, 0.946, 1.000, 0.850, 0.852,
# pi 750 GeV Em
1.226, 1.062, 1.050, 0.969, 1.025, 1.075, 0.947, 0.988, 0.936, 1.005, 0.956, 0.890, 0.872,
# pi 1000 GeV Em
1.032, 0.982, 1.025, 1.000, 0.959, 1.054, 0.945, 0.979, 1.106, 0.905, 0.939, 0.941, 1.100
]),
corrHFhHad = cms.vdouble(*[
# pi 1 GeV Had
0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
# pi 2 GeV Had
1.500, 0.100, 0.200, 0.950, 0.500, 0.450, 0.600, 0.150, 0.150, 0.050, 0.150, 0.010, 0.750,
# pi 3 GeV Had
1.500, 0.100, 0.200, 0.950, 0.500, 0.450, 0.600, 0.150, 0.150, 0.050, 0.150, 0.010, 0.750,
# pi 4 GeV Had
1.500, 0.100, 0.200, 0.950, 0.500, 0.450, 0.600, 0.150, 0.150, 0.050, 0.150, 0.010, 0.750,
# pi 5 GeV Had
46.15, 8.222, 1.947, 1.025, 0.976, 1.060, 1.039, 0.992, 1.022, 1.087, 1.150, 1.478, 3.125,
# pi 6 GeV Had
18.64, 3.269, 1.180, 0.928, 1.000, 1.118, 0.994, 0.937, 0.987, 0.977, 1.013, 1.387, 3.377,
# pi 7 GeV Had
4.910, 2.293, 1.003, 0.982, 1.025, 1.106, 0.920, 1.013, 0.992, 1.046, 1.157, 1.590, 2.260,
# pi 8 GeV Had
6.960, 1.252, 1.032, 0.995, 1.031, 1.098, 0.997, 1.000, 1.041, 1.007, 1.106, 1.258, 1.083,
# pi 9 GeV Had
2.860, 1.100, 0.925, 0.956, 1.050, 1.085, 1.000, 0.971, 1.038, 1.070, 1.080, 1.221, 0.930,
# pi 10 GeV Had
1.915, 1.010, 0.958, 0.997, 1.042, 1.134, 0.976, 0.970, 0.987, 1.056, 1.142, 1.327, 0.940,
# pi 12 GeV Had
0.570, 0.882, 0.968, 0.948, 1.018, 1.075, 0.934, 0.962, 1.077, 1.083, 1.215, 1.257, 0.884,
# pi 15 GeV Had
0.320, 0.860, 0.886, 0.990, 1.082, 1.020, 0.980, 1.012, 1.087, 1.080, 1.268, 1.372, 0.850,
# pi 20 GeV Had
0.000, 0.725, 0.936, 0.866, 0.975, 0.960, 0.888, 0.986, 1.103, 1.065, 1.316, 1.282, 0.810,
# pi 35 GeV Had
0.490, 0.728, 0.911, 0.860, 0.922, 0.947, 0.888, 0.935, 1.017, 1.038, 1.265, 1.198, 0.739,
# pi 50 GeV Had
0.605, 0.775, 0.898, 0.835, 0.938, 0.918, 0.861, 0.898, 1.002, 1.083, 1.205, 1.151, 0.755,
# pi 75 GeV Had
0.804, 0.791, 0.933, 0.807, 0.876, 0.958, 0.887, 0.927, 0.887, 0.978, 1.146, 1.117, 0.803,
# pi 100 GeV Had
0.713, 0.820, 0.904, 0.865, 0.935, 0.985, 0.862, 0.940, 0.885, 0.974, 1.186, 1.083, 0.796,
# pi 150 GeV Had
1.034, 0.893, 0.936, 0.994, 0.935, 0.883, 0.862, 0.887, 0.905, 1.020, 1.095, 0.996, 0.776,
# pi 200 GeV Had
1.300, 0.870, 0.957, 0.895, 0.912, 0.927, 0.843, 0.960, 0.875, 1.036, 1.006, 0.965, 0.706,
# pi 350 GeV Had
0.988, 0.893, 0.997, 0.830, 0.914, 0.986, 0.888, 0.955, 0.900, 1.078, 0.941, 0.825, 0.727,
# pi 500 GeV Had
0.908, 0.933, 0.991, 0.922, 0.935, 0.990, 0.838, 0.962, 0.950, 0.897, 1.037, 0.896, 0.776,
# pi 750 GeV Had
1.165, 0.965, 0.970, 0.884, 0.972, 1.037, 0.890, 0.951, 0.916, 0.957, 1.032, 0.938, 0.755,
# pi 1000 GeV Had
1.011, 0.830, 0.954, 0.944, 0.880, 0.943, 0.860, 0.880, 1.016, 0.875, 0.990, 0.865, 0.961
]),

#values for "old" parameterization
eResponseCoefficient = cms.double(1.0),
Expand Down
14 changes: 8 additions & 6 deletions FastSimulation/Calorimetry/src/CalorimetryManager.cc
Expand Up @@ -1293,7 +1293,8 @@ void CalorimetryManager::updateECAL(const std::map<CaloHitID,float>& hitMap, int

void CalorimetryManager::updateHCAL(const std::map<CaloHitID,float>& hitMap, int trackID, float corr)
{
std::vector<double> hfcorr = myHDResponse_->getCorrHF();
std::vector<double> hfcorrEm = myHDResponse_->getCorrHFem();
std::vector<double> hfcorrHad = myHDResponse_->getCorrHFhad();
std::map<CaloHitID,float>::const_iterator mapitr;
std::map<CaloHitID,float>::const_iterator endmapitr=hitMap.end();
HMapping_.reserve(HMapping_.size()+hitMap.size());
Expand All @@ -1315,8 +1316,11 @@ void CalorimetryManager::updateHCAL(const std::map<CaloHitID,float>& hitMap, int
time = timeShiftHE_[hdetid.ietaAbs()-ietaShiftHE_];
}
else if (hdetid.subdetId()== HcalForward){
if(useShowerLibrary) {
if(useCorrectionSL) energy *= hfcorr[hdetid.ietaAbs()-29];
if(useShowerLibrary) {
if(useCorrectionSL) {
if(hdetid.depth()== 1) energy *= hfcorrEm[hdetid.ietaAbs()-29];
if(hdetid.depth()== 2) energy *= hfcorrHad[hdetid.ietaAbs()-29];
}
} else {
if(hdetid.depth()== 1) energy *= samplingHF_[0];
if(hdetid.depth()== 2) energy *= samplingHF_[1];
Expand Down Expand Up @@ -1372,9 +1376,7 @@ void CalorimetryManager::loadFromHcal(edm::PCaloHitContainer & c) const
{
c.reserve(c.size()+HMapping_.size());
for(unsigned i=0; i<HMapping_.size(); i++) {
uint32_t id = HMapping_[i].first.unitID();
theHFShowerLibrary->modifyDepth(id);
c.push_back(PCaloHit(DetId(id),HMapping_[i].second,HMapping_[i].first.timeSlice(),HMapping_[i].first.trackID()));
c.push_back(PCaloHit(DetId(HMapping_[i].first.unitID()),HMapping_[i].second,HMapping_[i].first.timeSlice(),HMapping_[i].first.trackID()));
}
}

Expand Down
61 changes: 48 additions & 13 deletions FastSimulation/Calorimetry/src/HCALResponse.cc
Expand Up @@ -211,9 +211,27 @@ HCALResponse::HCALResponse(const edm::ParameterSet& pset) {
maxEta = pset.getParameter<int>("maxEta");
maxEne = pset.getParameter<int>("maxEne");
energyHF = pset.getParameter<vec1>("energyHF");
corrHFg = pset.getParameter<vec1>("corrHFg");
corrHFh = pset.getParameter<vec1>("corrHFh");
corrHF = vec1(maxEta,0);
vec1 _corrHFgEm = pset.getParameter<vec1>("corrHFgEm");
vec1 _corrHFgHad = pset.getParameter<vec1>("corrHFgHad");
vec1 _corrHFhEm = pset.getParameter<vec1>("corrHFhEm");
vec1 _corrHFhHad = pset.getParameter<vec1>("corrHFhHad");
corrHFem = vec1(maxEta,0);
corrHFhad = vec1(maxEta,0);

// initialize 2D vector corrHFgEm[energy][eta]
corrHFgEm = vec2(maxEne,vec1(maxEta,0));
corrHFgHad = vec2(maxEne,vec1(maxEta,0));
corrHFhEm = vec2(maxEne,vec1(maxEta,0));
corrHFhHad = vec2(maxEne,vec1(maxEta,0));
// Fill
for(int i = 0; i < maxEne; i++){
for(int j = 0; j < maxEta; j++){
corrHFgEm[i][j] = _corrHFgEm[i*maxEta + j];
corrHFgHad[i][j] = _corrHFgHad[i*maxEta + j];
corrHFhEm[i][j] = _corrHFhEm[i*maxEta + j];
corrHFhHad[i][j] = _corrHFhHad[i*maxEta + j];
}
}
}

double HCALResponse::getMIPfraction(double energy, double eta){
Expand Down Expand Up @@ -580,25 +598,42 @@ void HCALResponse::correctHF(double ee, int type) {
if(ee >= energyHF[i]) jmin = i;
}

double x1, x2, y1, y2;
double x1, x2;
double y1em, y2em;
double y1had, y2had;
for(int i=0; i<maxEta; ++i) {
if(ee < energyHF[0]) {
if(abs(type)==11 || abs(type)==22) corrHF[i] = corrHFg[i];
else corrHF[i] = corrHFh[i];
if(abs(type)==11 || abs(type)==22) {
corrHFem[i] = corrHFgEm[0][i];
corrHFhad[i] = corrHFgHad[0][i];
} else {
corrHFem[i] = corrHFhEm[0][i];
corrHFhad[i] = corrHFhHad[0][i];
}
} else if(jmin >= maxEne-1) {
if(abs(type)==11 || abs(type)==22) corrHF[i] = corrHFg[maxEta*jmin+i];
else corrHF[i] = corrHFh[maxEta*jmin+i];
if(abs(type)==11 || abs(type)==22) {
corrHFem[i] = corrHFgEm[maxEta][i];
corrHFhad[i] = corrHFgHad[maxEta][i];
} else {
corrHFem[i] = corrHFhEm[maxEta][i];
corrHFhad[i] = corrHFhHad[maxEta][i];
}
} else {
x1 = energyHF[jmin];
x2 = energyHF[jmin+1];
if(abs(type)==11 || abs(type)==22) {
y1 = corrHFg[maxEta*jmin+i];
y2 = corrHFg[maxEta*(jmin+1)+i];
y1em = corrHFgEm[jmin][i];
y2em = corrHFgEm[jmin+1][i];
y1had = corrHFgHad[jmin][i];
y2had = corrHFgHad[jmin+1][i];
} else {
y1 = corrHFh[maxEta*jmin+i];
y2 = corrHFh[maxEta*(jmin+1)+i];
y1em = corrHFhEm[jmin][i];
y2em = corrHFhEm[jmin+1][i];
y1had = corrHFhHad[jmin][i];
y2had = corrHFhHad[jmin+1][i];
}
corrHF[i] = y1 + (ee-x1)*((y2-y1)/(x2-x1));
corrHFem[i] = y1em + (ee-x1)*((y2em-y1em)/(x2-x1));
corrHFhad[i] = y1had + (ee-x1)*((y2had-y1had)/(x2-x1));
}
}

Expand Down