CMS 3D CMS Logo

HCALResponse.cc

Go to the documentation of this file.
00001 //FastSimulation headers
00002 #include "FastSimulation/Calorimetry/interface/HCALResponse.h"
00003 #include "FastSimulation/Utilities/interface/RandomEngine.h"
00004 
00005 // CMSSW Headers
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00008 
00009 #include<iostream>
00010 #include <math.h>
00011 
00012 #define debug 0
00013 
00014 using namespace edm;
00015 
00016 HCALResponse::HCALResponse(const edm::ParameterSet& pset,
00017                            const RandomEngine* engine) :
00018   random(engine)
00019 { 
00020   
00021   RespPar[HCAL][0][0] =  
00022     pset.getParameter<double>("HadronBarrelResolution_Stochastic");
00023   RespPar[HCAL][0][1] =  
00024     pset.getParameter<double>("HadronBarrelResolution_Constant");
00025   RespPar[HCAL][0][2] =  
00026     pset.getParameter<double>("HadronBarrelResolution_Noise");
00027 
00028   RespPar[HCAL][1][0] =  
00029     pset.getParameter<double>("HadronEndcapResolution_Stochastic");
00030   RespPar[HCAL][1][1] =  
00031     pset.getParameter<double>("HadronEndcapResolution_Constant");
00032   RespPar[HCAL][1][2] =  
00033     pset.getParameter<double>("HadronEndcapResolution_Noise");
00034 
00035   RespPar[VFCAL][0][0] =  
00036     pset.getParameter<double>("HadronForwardResolution_Stochastic");
00037   RespPar[VFCAL][0][1] =  
00038     pset.getParameter<double>("HadronForwardResolution_Constant");
00039   RespPar[VFCAL][0][2] =  
00040     pset.getParameter<double>("HadronForwardResolution_Noise");
00041 
00042   RespPar[VFCAL][1][0] =  
00043     pset.getParameter<double>("ElectronForwardResolution_Stochastic");
00044   RespPar[VFCAL][1][1] =  
00045     pset.getParameter<double>("ElectronForwardResolution_Constant");
00046   RespPar[VFCAL][1][2] =  
00047     pset.getParameter<double>("ElectronForwardResolution_Noise");
00048 
00049   eResponseScale[0] = 
00050     pset.getParameter<double>("eResponseScaleHB");  
00051   eResponseScale[1] = 
00052     pset.getParameter<double>("eResponseScaleHE");
00053   eResponseScale[2] = 
00054     pset.getParameter<double>("eResponseScaleHF");
00055 
00056   eResponsePlateau[0] = 
00057     pset.getParameter<double>("eResponsePlateauHB");
00058   eResponsePlateau[1] = 
00059     pset.getParameter<double>("eResponsePlateauHE");
00060   eResponsePlateau[2] = 
00061     pset.getParameter<double>("eResponsePlateauHF");
00062 
00063   eResponseExponent = 
00064     pset.getParameter<double>("eResponseExponent");
00065 
00066   eResponseCoefficient = 
00067     pset.getParameter<double>("eResponseCoefficient");
00068 
00069   eResponseCorrection = 
00070     pset.getParameter<double>("eResponseCorrection");
00071 
00072   // If need - add a small energy to each hadron ...
00073   eBias = 
00074     pset.getParameter<double>("energyBias");
00075   
00076   
00077   etaStep = 0.1;
00078   muStep  = 0.25;
00079 
00080   double _eGridHD[maxHDe]   = {1., 2., 3., 5., 9., 15., 20., 30., 50., 100., 150., 225., 300., 1000., 3000. };
00081   double _eGridEM[maxEMe]     = {10., 30., 100., 300., 700., 1000., 3000.};
00082   double _eGridMU[maxMUe]     = {10., 30., 100., 300.};
00083   double _etaGridMU[maxMUeta] = {0.3, 0.6, 0.8, 1.25, 1.4, 3.0};
00084 
00085 
00086   // new HB parameters and eta-energy 
00087 
00088   double _meanHD[maxHDe][maxHDeta] = {
00089 
00090     // 1 
00091     {0.852943, 0.854465, 0.84154, 0.857752, 0.850015, 0.836228, 0.829013, 0.840393, 0.808279, 0.78778, 0.734305, 0.752044, 0.725834, 0.847857, 1.35276, 1.68579, 1.87407, 1.84911, 1.67605, 1.51554, 1.31382, 1.15419, 1.05199, 0.946356, 0.895496, 0.786086, 0.762652, 0.81402, 0.685126, 0.613034, 0.718209, 1.33962, 1.7089, 1.74678, 1.7809, 1.84624, 1.84789, 1.7914, 1.77522, 1.84333, 1.8224, 1.6825, 2.02152, 2.11024, 1.84447, 1.96078, 1.08477, 1.19283, 0., 1.98054, 1.95858},
00092     // 2
00093     {1.51566, 1.56651, 1.517, 1.53076, 1.49417, 1.47419, 1.47342, 1.46184, 1.4037, 1.36024, 1.3528, 1.26052, 1.26461, 1.40515, 1.94627, 2.41833, 2.8175, 2.66524, 2.31136, 2.13079, 2.00377, 1.79268, 1.59972, 1.51871, 1.44475, 1.32857, 1.37521, 1.4145, 1.20052, 1.18962, 1.37304, 2.63921, 2.80823, 2.66675, 2.79082, 2.61845, 2.81399, 2.81446, 2.87697, 2.77988, 2.78829, 2.84719, 2.73696, 2.70128, 2.88369, 3.06301, 2.78651, 3.35891, 1.91127, 2.72903, 3.12059},
00094     // 3
00095     {2.25947, 2.37462, 2.31363, 2.29465, 2.26523, 2.1931, 2.14593, 2.13711, 2.12751, 2.02408, 1.95213, 1.85829, 1.82538, 1.941, 2.51479, 3.13024, 3.44578, 3.296, 3.10541, 2.72296, 2.60799, 2.46726, 2.31468, 2.27247, 2.12374, 1.92959, 1.89087, 1.98702, 1.86603, 1.64767, 2.33705, 3.22321, 3.45114, 3.41116, 3.30913, 3.25586, 3.38883, 3.36044, 3.45296, 3.23783, 3.41146, 3.35636, 3.31715, 3.30665, 3.32765, 3.64607, 3.37633, 3.59206, 3.47103, 3.30305, 3.12484},
00096     // 5
00097     {3.94781, 4.04663, 3.94959, 3.95594, 3.84631, 3.81943, 3.70969, 3.66348, 3.57376, 3.53355, 3.40166, 3.25598, 3.13458, 3.32404, 3.99964, 4.66005, 4.89319, 4.77568, 4.52362, 4.26968, 4.10895, 3.84062, 3.682, 3.66844, 3.38084, 3.36406, 3.34008, 3.21166, 2.89481, 2.5081, 3.16929, 4.01638, 4.50887, 4.3893, 4.25382, 4.19941, 4.47431, 4.48935, 4.15872, 4.24113, 4.41205, 4.15019, 4.07021, 4.12698, 4.34743, 4.27719, 4.40183, 4.36443, 4.67675, 4.08096, 4.14775},
00098     // 9  
00099     {7.51268, 7.3724, 7.3264, 7.48695, 7.41602, 7.17483, 7.16372, 7.0044, 6.72821, 6.6449, 6.54846, 6.55159, 6.3368, 6.25813, 7.09979, 7.89042, 7.78224, 7.80669, 7.70816, 7.47752, 7.03605, 7.01178, 6.57208, 6.58319, 6.44066, 6.27203, 6.24111, 5.88214, 5.28487, 4.55473, 5.02279, 5.95265, 6.03803, 5.91343, 6.35191, 6.06645, 6.46299, 6.23322, 5.90245, 6.07703, 6.05838, 5.90386, 6.12168, 5.82694, 5.97017, 6.09613, 5.91006, 6.41224, 6.07286, 5.73532, 5.69078},
00100     // 15
00101     {12.277, 12.3519, 12.509, 12.3642, 12.2486, 12.0549, 11.9111, 11.7707, 11.5229, 11.5248, 11.2285, 10.8268, 10.5189, 10.6757, 11.6384, 12.9599, 12.7226, 12.6335, 12.1609, 12.1146, 11.9021, 11.3053, 11.4498, 11.0535, 10.9239, 10.9186, 10.4928, 10.1399, 9.15779, 7.99941, 8.26467, 9.36702, 9.31689, 9.2988, 9.43048, 9.39939, 9.42507, 9.47005, 9.29829, 9.55032, 9.29194, 9.33688, 9.34113, 9.02108, 8.99807, 8.67856, 8.54389, 8.73673, 9.09002, 7.70564, 7.73036},
00102     // 20
00103     {17.0232, 16.9458, 17.1702, 17.2756, 16.8824, 16.7227, 16.6001, 16.3167, 16.1666, 16.1477, 15.7972, 15.7698, 15.1619, 15.3582, 16.3698, 17.696, 17.4715, 17.2794, 17.062, 16.9981, 16.7271, 16.2915, 16.0463, 15.9617, 15.4814, 15.2561, 14.9147, 14.4817, 13.276, 11.643, 10.9876, 12.0543, 12.3299, 12.4279, 12.2813, 12.2737, 12.5782, 11.9942, 12.3902, 12.1904, 12.1001, 12.1381, 11.8851, 11.5098, 11.36, 11.3283, 11.0613, 11.0296, 11.0566, 10.0814, 9.77867},
00104     // 30 
00105     {26.6271, 26.4291, 26.4369, 26.4014, 26.4291, 26.2205, 25.8559, 25.524, 25.2894, 25.1318, 24.6118, 24.444, 23.7218, 23.8945, 25.0518, 27.1907, 26.6185, 26.9774, 26.5692, 26.2866, 26.2468, 25.7612, 25.257, 24.9322, 25.0591, 24.3303, 23.7683, 22.8596, 21.5697, 18.3256, 18.1898, 18.8304, 19.8235, 19.3173, 18.5432, 18.8587, 19.0623, 18.7488, 18.2976, 18.5947, 18.199, 18.1179, 17.6284, 17.7679, 16.9029, 16.3563, 16.6297, 16.2328, 16.0768, 15.4877, 13.8084},
00106     // 50
00107     {44.598, 44.5183, 44.4442, 44.5355, 44.2819, 43.9152, 43.2968, 43.0361, 42.6419, 42.3245, 42.0667, 40.8106, 40.2412, 41.0128, 42.1762, 45.6815, 44.5735, 44.9349, 44.8595, 44.4337, 43.8446, 43.6824, 43.1813, 42.9421, 42.3412, 41.6979, 40.9613, 39.8213, 37.7902, 32.7211, 33.2236, 35.0153, 34.0075, 34.3796, 33.8847, 33.8619, 34.6135, 33.2317, 32.923, 32.7936, 33.275, 31.7787, 31.579, 31.4607, 30.7226, 29.9954, 29.3432, 29.283, 27.0721, 26.4577, 25.0271},
00108     // 100
00109     {89.7967, 89.7663, 90.1733, 90.2541, 89.5181, 88.2439, 88.2443, 88.4666, 86.6436, 86.4257, 84.6539, 84.2442, 82.3212, 83.0281, 86.9196, 92.3651, 90.641, 90.0152, 89.5662, 89.3856, 89.441, 88.6231, 88.3607, 87.7513, 86.9699, 86.4551, 84.7021, 82.1248, 78.4669, 70.9189, 71.7124, 73.1861, 72.5637, 71.3653, 71.6502, 71.2387, 72.4815, 72.0133, 71.3529, 70.2482, 69.7749, 68.5522, 68.6207, 66.0551, 65.1983, 62.6396, 61.5266, 61.8448, 64.4365, 57.1366, 53.8488},
00110     // 150
00111     {135.499, 135.249, 135.995, 135.322, 134.963, 133.11, 133.926, 132.915, 131.322, 130.832, 130.16, 127.541, 125.7, 125.084, 130.784, 139.657, 136.665, 135.15, 135.047, 136.739, 135.943, 133.78, 134.236, 133.337, 132.135, 131.256, 129.13, 126.477, 121.25, 110.041, 110.3, 110.381, 112.351, 112.153, 110.842, 111.519, 110.351, 107.693, 109.415, 107.114, 105.043, 103.589, 103.44, 102.473, 101.178, 98.0667, 97.4432, 95.3034, 91.0626, 88.5847, 80.0944},
00112     // 225
00113     {204.642, 204.022, 204.18, 206.326, 202.064, 201.651, 200.156, 199.682, 198.231, 196.075, 196.168, 193.934, 189.027, 190.951, 201.787, 209.929, 207.096, 203.49, 206.579, 204.91, 204.003, 202.287, 202.829, 200.912, 200.29, 199.007, 196.387, 192.113, 185.914, 171.755, 168.886, 168.161, 168.439, 168.852, 169.556, 164.681, 167.453, 166.474, 163.668, 162.479, 162.724, 159.757, 157.43, 156.43, 152.452, 148.757, 145.13, 144.883, 139.725, 133.74, 125.22},
00114     // 300
00115     {273.26, 273.138, 274.07, 274.43, 272.065, 268.931, 268.264, 266.966, 265.637, 263.594, 263.541, 258.933, 253.246, 254.596, 259.06, 280.273, 274.734, 273.901, 275.674, 273.696, 273.116, 272.668, 271.153, 269.772, 270.037, 268.324, 264.005, 257.363, 250.12, 229.29, 225.132, 229.211, 227.32, 228.17, 229.027, 224.46, 224.174, 222.363, 222.571, 220.281, 220.046, 219.335, 211.974, 209.954, 206.11, 201.292, 198.966, 196.975, 199.925, 181.304, 169.254},
00116     // 1000  
00117     {918.549, 926.715, 928.504, 928.634, 931.608, 910.732, 898.751, 904.597, 892.304, 885.822, 888.46, 874.865, 866.548, 865.004, 916.266, 945.162, 934.361, 925.802, 925.546, 927.83, 917.999, 921.117, 918.166, 911.54, 910.516, 907.446, 895.154, 886.401, 882.473, 800.177, 794.423, 799.712, 792.543, 781.901, 790.296, 778.844, 776.435, 775.26, 770.469, 766.069, 764.791, 753.17, 741, 733.149, 719, 702.91, 691.743, 683.678, 678.171, 633.365, 597.704},
00118     // 3000
00119     {2725.77, 2725.79, 2682.35, 2707.21, 2712.13, 2796.74, 2654.65, 2610.28, 2576.73, 2538.72, 2596.2, 2585.62, 2547.25, 2555.13, 2802.13, 2922.29, 2722.63, 2847.67, 2809.36, 2826.11, 2793.67, 2777.37, 2737.78, 2762.62, 2774.16, 2714.07, 2716.01, 2697.35, 2722.53, 2353.76, 2383.52, 2397.01, 2379.55, 2364.41, 2352.62, 2352.26, 2369.45, 2337.9, 2317.05, 2302.6, 2261.48, 2263.71, 2202.48, 2185.92, 2166.9, 2125.03, 2090.92, 2027.79, 2047.74, 1923.75, 1825.16}
00120   };
00121 
00122   double _sigmaHD[maxHDe][maxHDeta] = {
00123 
00124     // 1 
00125     {0.490082, 0.488995, 0.459298, 0.47414, 0.468078, 0.444967, 0.461639, 0.463423, 0.450532, 0.425352, 0.445426, 0.409461, 0.405864, 0.464158, 0.607162, 0.672064, 0.633007, 0.669161, 0.687805, 0.707215, 0.661638, 0.720379, 0.657176, 0.663705, 0.64388, 0.638968, 0.611116, 0.694851, 0.577611, 0.653165, 0.825112, 1.03785, 0.873161, 0.875499, 0.8742, 0.847838, 0.788833, 0.886185, 0.775074, 0.817156, 0.812542, 0.777236, 0.562841, 0.632774, 0.71344, 0.831268, 0.91188, 1.07673, 0, 0.561492, 0.457156}, 
00126     // 2
00127     {0.815024, 0.886509, 0.829002, 0.803906, 0.794713, 0.815821, 0.771131, 0.817175, 0.784701, 0.743375, 0.822498, 0.711292, 0.714088, 0.756059, 0.943292, 1.07732, 1.12721, 1.11307, 1.10531, 1.02029, 1.09087, 1.05856, 0.989217, 1.04511, 1.08429, 1.0417, 1.10584, 1.10588, 1.03333, 1.14744, 1.40986, 1.42363, 1.35378, 1.24834, 1.37034, 1.28982, 1.414, 1.35073, 1.24736, 1.22988, 1.24553, 1.36293, 1.25973, 1.26323, 1.41976, 1.32979, 1.19975, 1.0999, 0.800008, 1.1679, 1.31976},
00128     // 3
00129     {1.1913, 1.26032, 1.16245, 1.14341, 1.11525, 1.16633, 1.10795, 1.13395, 1.10098, 1.14738, 1.06303, 1.03356, 0.952197, 1.00708, 1.28967, 1.38696, 1.49048, 1.3518, 1.41757, 1.35285, 1.37112, 1.43849, 1.46906, 1.39724, 1.45714, 1.36782, 1.31359, 1.36687, 1.43857, 1.46273, 1.98502, 1.85995, 1.89017, 1.80652, 1.88426, 1.69611, 1.79637, 1.78097, 1.89756, 1.75982, 1.86481, 1.90406, 1.78612, 1.71115, 1.78846, 2.00915, 1.78856, 1.52387, 1.81234, 1.7293, 1.76507},
00130     // 5
00131     {1.6604, 1.66667, 1.64187, 1.53644, 1.66152, 1.64745, 1.61256, 1.65189, 1.66482, 1.70305, 1.61981, 1.60101, 1.56121, 1.71157, 2.01672, 2.0052, 2.09688, 1.98942, 2.02736, 2.02701, 2.13975, 2.04765, 2.08911, 2.19683, 2.00948, 1.99173, 2.11909, 1.92865, 1.96363, 1.89043, 2.7291, 2.54827, 2.83006, 2.88526, 2.76645, 2.61248, 2.79863, 2.70443, 2.57394, 2.72147, 2.81697, 2.51909, 2.51807, 2.57132, 2.69621, 2.67878, 2.69868, 2.70517, 2.91759, 2.79587, 2.68952},
00132     // 9  
00133     {2.46609, 2.45654, 2.34277, 2.33993, 2.59332, 2.47403, 2.43117, 2.41355, 2.43823, 2.37324, 2.5881, 2.72423, 2.50764, 2.6276, 3.15131, 3.00083, 3.12852, 3.09424, 3.13305, 3.10601, 3.00247, 3.23155, 3.01714, 3.08644, 3.07772, 3.22426, 3.17687, 3.0988, 3.03098, 2.66298, 3.94971, 4.27378, 4.31887, 4.11109, 4.29989, 4.20533, 4.53887, 4.19436, 4.03905, 4.22275, 4.12285, 4.14521, 3.95413, 3.97016, 3.91847, 4.1504, 3.84676, 4.38899, 3.94464, 3.77568, 3.79662},
00134     // 15
00135     {3.11176, 2.98809, 2.87615, 2.96065, 2.98216, 3.10976, 3.00921, 3.01385, 2.89864, 3.32154, 3.12822, 3.1746, 3.23883, 3.44202, 4.12919, 3.99401, 3.99225, 3.87495, 3.81577, 3.67555, 3.75903, 3.65166, 3.78922, 3.75912, 3.7972, 4.10763, 3.64436, 3.91192, 3.59917, 3.93558, 6.19193, 5.84671, 6.21677, 5.94016, 5.94956, 6.17689, 6.19529, 6.17602, 5.9251, 5.99188, 6.32856, 5.93335, 6.07306, 5.97594, 5.94576, 5.73293, 5.59722, 5.6343, 5.92824, 4.99017, 5.37399},
00136     // 20
00137     {3.52419, 3.55694, 3.67329, 3.50429, 3.54008, 3.60558, 3.67756, 3.62067, 3.71423, 3.77833, 3.98078, 4.04785, 3.99432, 4.17227, 4.81162, 4.81996, 4.48979, 4.53683, 4.49664, 4.50619, 4.59769, 4.40734, 4.41761, 4.54629, 4.3776, 4.51859, 4.55614, 4.54285, 4.52298, 4.6295, 7.23726, 7.22681, 7.29986, 7.33678, 7.19693, 7.21815, 7.27432, 6.89657, 7.4455, 7.34935, 7.40161, 7.31724, 7.11227, 6.92616, 7.10663, 6.96595, 6.62997, 6.50278, 6.83112, 6.18473, 6.25886},
00138     // 30 
00139     {4.50997, 4.63488, 4.33416, 4.3455, 4.57591, 4.61948, 4.5114, 4.63573, 4.75063, 5.21722, 4.91395, 5.18909, 5.29877, 5.8893, 6.4698, 5.41643, 5.82174, 5.47017, 5.63263, 5.68317, 5.71157, 5.62794, 5.52868, 5.52876, 5.63234, 5.69708, 5.66398, 5.30422, 5.51338, 5.94153, 8.83953, 8.96645, 9.71694, 8.84191, 9.02549, 9.10309, 9.01366, 8.9174, 8.87092, 9.12399, 8.639, 8.79333, 8.47035, 8.8469, 8.49896, 8.34351, 8.54963, 8.22855, 7.95291, 8.39018, 7.42634},
00140     // 50
00141     {6.15822, 6.07095, 6.02397, 6.0434, 6.12172, 6.28771, 6.49298, 6.37586, 6.49054, 6.59978, 6.99154, 7.21283, 7.41474, 8.52547, 8.59799, 6.85196, 7.31781, 7.73078, 7.18341, 7.53447, 7.39498, 7.32203, 7.18665, 7.77701, 7.34558, 7.45204, 7.73734, 7.38763, 7.95031, 8.74526, 13.5026, 14.087, 13.5382, 14.0253, 13.8102, 14.3097, 14.0878, 13.7311, 13.1407, 13.4323, 13.5002, 13.2932, 13.3055, 13.5501, 13.4548, 12.6071, 12.9463, 12.8391, 12.203, 11.9572, 12.0717},
00142     // 100
00143     {9.19388, 9.10035, 9.29132, 9.23766, 9.95796, 9.64536, 10.2383, 10.0851, 10.6799, 10.9918, 11.2214, 12.2275, 12.8867, 14.9149, 14.8114, 10.7315, 10.4093, 10.7833, 10.9523, 10.0806, 10.7884, 11.4462, 11.2629, 11.572, 11.6289, 11.8671, 11.8389, 11.2067, 11.8974, 13.2567, 21.7063, 22.6707, 22.0468, 21.8025, 21.9436, 21.3173, 21.7804, 21.4801, 21.1596, 21.3004, 21.2974, 21.4119, 21.3619, 21.3372, 20.9671, 20.5847, 20.3922, 20.358, 21.6135, 20.1588, 19.9312},
00144     // 150
00145     {12.6013, 12.4014, 12.3502, 12.4523, 13.3722, 12.6296, 13.3706, 13.9701, 13.9642, 15.2968, 15.5296, 16.0579, 16.6997, 19.7058, 19.3779, 13.0411, 13.7941, 13.4918, 12.7886, 13.5511, 14.1537, 14.5879, 13.7593, 14.6109, 15.319, 14.8369, 15.055, 15.4111, 14.9638, 19.5697, 29.5438, 28.4341, 29.5001, 28.6255, 28.1345, 28.7621, 27.8616, 28.3656, 29.1136, 29.3842, 29.0655, 29.2517, 27.6812, 29.9909, 28.2786, 28.3108, 28.1117, 28.2952, 25.4367, 26.3312, 26.9351},
00146     // 225
00147     {17.0352, 16.3376, 17.0813, 16.7251, 17.1798, 17.4454, 18.6252, 18.7792, 19.1615, 19.4946, 20.4115, 22.5524, 23.7825, 26.507, 26.5417, 16.7313, 18.0743, 17.82, 17.1023, 17.6686, 18.0394, 18.4374, 18.9185, 20.3845, 18.5059, 19.7464, 19.3743, 18.8217, 19.0649, 25.2259, 32.9327, 33.7565, 34.8785, 34.7315, 35.1025, 32.9536, 36.1751, 34.125, 34.2612, 35.7677, 34.4184, 34.1413, 33.8299, 35.0248, 33.8759, 34.7572, 34.7386, 33.3108, 32.2063, 32.9175, 32.4289},
00148     // 300
00149     {21.0163, 20.1113, 20.6941, 20.5416, 21.5116, 21.0057, 20.6314, 22.2696, 24.4086, 25.0354, 26.012, 28.7677, 29.6983, 34.742, 35.6044, 19.7054, 20.4423, 22.1818, 21.05, 20.2357, 21.567, 21.8094, 23.6034, 22.1632, 22.7273, 24.1739, 24.1783, 21.8152, 22.7701, 32.0392, 39.6739, 38.1911, 38.8438, 38.7878, 39.9107, 39.9354, 39.1624, 38.7563, 39.0682, 39.782, 39.3639, 39.1952, 38.5359, 36.9295, 38.0356, 38.9107, 36.7962, 38.9947, 40.8741, 37.7289, 37.0498},
00150     // 1000  
00151     {59.0302, 55.7741, 52.4265, 46.7516, 71.7449, 64.1868, 60.4807, 69.7086, 68.6766, 61.9963, 71.942, 74.3787, 82.8669, 74.3176, 126.479, 45.7608, 48.5024, 54.7357, 48.5426, 48.1392, 52.3334, 53.6392, 49.0048, 48.5888, 55.7763, 57.5842, 57.7691, 52.4158, 60.8689, 110.82, 122.105, 121.542, 121.557, 119.535, 119.485, 122.162, 125.814, 126.912, 121.749, 123.422, 124.672, 124.29, 125.71, 125.09, 127.452, 124.789, 129.179, 131.48, 126.986, 127.015, 137.474},
00152     // 3000
00153     {139.603, 219.769, 185.993, 176.326, 219.777, 236.348, 205.755, 166.129, 196.274, 229.818, 244.988, 203.299, 195.058, 267.577, 212.721, 231.2878, 187.6332, 104.348, 148.279, 143.346, 149.629, 164.261, 158.762, 161.727, 132.896, 157.504, 148.903, 159.439, 174.445, 186.782, 211.359, 209.372, 209.512, 231.488, 232.585, 229.347, 223.462, 234.988, 226.747, 235.165, 247.826, 235.776, 234.833, 237.132, 231.817, 249.343, 260.783, 253.386, 249.56, 247.242, 250.905}
00154   };
00155 
00156 
00157   double _meanHD_mip[maxHDe][maxHDeta] = {
00158 
00159     // 1
00160     { 0.711239, 0.702094, 0.650612, 0.691964, 0.674718, 0.664688, 0.64245, 0.663826, 0.660359, 0.641932, 0.565566, 0.600813, 0.580337, 0.548834, 0.725643, 0.699558, 0.609646, 0.778973, 0.42652, 0.660581, 0.610935, 0.66865, 0.789269, 0.688613, 0.625155, 0.659819, 0.609071, 0.698592, 0.592922, 0.598031, 0.719904, 1.33962, 1.7089, 1.74678, 1.7809, 1.84624, 1.84789, 1.7914, 1.77522, 1.84333, 1.8224, 1.6825, 2.02152, 2.11024, 1.84447, 1.96078, 1.08477, 1.19283, 0., 1.98054, 1.95858},
00161     //2
00162     {1.63316, 1.66894, 1.53178, 1.67642, 1.63186, 1.45345, 1.55102, 1.53885, 1.52153, 1.28185, 1.34913, 1.20369, 1.15911, 1.23232, 1.38019, 1.48, 1.34802, 1.95864, 1.40764, 1.20819, 1.40696, 1.32753, 1.22804, 1.30968, 1.17084, 1.17541, 1.26714, 1.36174, 1.13094, 1.16708, 1.35883, 2.63921, 2.80823, 2.66675, 2.79082, 2.61845, 2.81399, 2.81446, 2.87697, 2.77988, 2.78829, 2.84719, 2.73696, 2.70128, 2.88369, 3.06301, 2.78651, 3.35891, 1.91127, 2.72903, 3.12059},
00163     // 3
00164     {2.65332, 2.70623, 2.7018, 2.76175, 2.54075, 2.60959, 2.60781, 2.37439, 2.50742, 2.3088, 2.15608, 2.38096, 1.99361, 1.98449, 1.98423, 2.14624, 2.74627, 1.88957, 2.4163, 2.03354, 2.18475, 2.08019, 2.05307, 2.14394, 2.10737, 1.88707, 1.83712, 1.98153, 1.90708, 1.63032, 2.33388, 3.22321, 3.45114, 3.41116, 3.30913, 3.25586, 3.38883, 3.36044, 3.45296, 3.23783, 3.41146, 3.35636, 3.31715, 3.30665, 3.32765, 3.64607, 3.37633, 3.59206, 3.47103, 3.30305, 3.12484},
00165     // 5
00166     {4.4878, 4.54728, 4.62629, 4.56869, 4.5763, 4.60545, 3.95745, 4.25496, 4.12878, 4.36985, 4.24089, 3.90405, 3.6153, 3.87899, 4.43035, 4.27544, 5.44038, 3.66134, 4.03114, 4.54681, 4.34139, 4.04669, 3.83227, 4.07111, 3.80309, 3.63849, 3.839, 3.62284, 3.18677, 2.60743, 3.18417, 4.01638, 4.50887, 4.3893, 4.25382, 4.19941, 4.47431, 4.48935, 4.15872, 4.24113, 4.41205, 4.15019, 4.07021, 4.12698, 4.34743, 4.27719, 4.40183, 4.36443, 4.67675, 4.08096, 4.14775},
00167     // 9  
00168     {8.43477, 8.51486, 8.40231, 8.59226, 8.91993, 8.54174, 8.28841, 7.95739, 7.90281, 7.69989, 7.97914, 8.30979, 7.51444, 7.9163, 7.50584, 7.70357, 8.22949, 7.27691, 8.1654, 8.20692, 7.59761, 8.09899, 7.19715, 7.58326, 7.91849, 7.63617, 7.54188, 7.23283, 6.30379, 4.80179, 5.05798, 5.95265, 6.03803, 5.91343, 6.35191, 6.06645, 6.46299, 6.23322, 5.90245, 6.07703, 6.05838, 5.90386, 6.12168, 5.82694, 5.97017, 6.09613, 5.91006, 6.41224, 6.07286, 5.73532, 5.69078},
00169     // 15
00170     {13.4976, 13.6248, 14.0872, 13.4073, 13.4284, 13.5104, 13.466, 13.361, 13.0007, 13.3468, 12.8132, 12.218, 12.3597, 12.3305, 13.3735, 13.1213, 11.9094, 15.3209, 11.5556, 14.2708, 14.1975, 12.8502, 12.8502, 12.5877, 12.7984, 13.2029, 12.2993, 12.2273, 11.0902, 8.38904, 8.36176, 9.3738, 9.31689, 9.2988, 9.43048, 9.39939, 9.42507, 9.47005, 9.29829, 9.55032, 9.29194, 9.33688, 9.34113, 9.02108, 8.99807, 8.67856, 8.54389, 8.73673, 9.09002, 7.70564, 7.73036},
00171     // 20
00172     {18.1103, 18.899, 19.0302, 18.8859, 18.658, 18.9164, 18.7733, 18.1455, 18.0186, 17.9529, 18.6631, 17.8564, 16.9817, 17.7448, 17.7333, 19.1855, 18.8339, 17.9843, 17.6816, 18.7623, 19.4202, 17.9993, 17.7789, 18.2028, 17.4853, 17.6785, 17.5426, 16.8248, 15.4801, 12.3062, 11.1417, 12.0543, 12.3299, 12.4279, 12.2813, 12.2737, 12.5782, 11.9942, 12.3902, 12.1904, 12.1001, 12.1381, 11.8851, 11.5098, 11.36, 11.3283, 11.0613, 11.0296, 11.0566, 10.0814, 9.77867},
00173     // 30 
00174     {28.3204, 28.1687, 28.576, 28.5953, 29.0841, 28.4864, 28.0265, 27.7283, 27.6257, 27.9254, 26.9392, 27.511, 26.3439, 28.9796, 28.8712, 30.0546, 30.0006, 28.7041, 28.3496, 28.1274, 28.6682, 28.4366, 28.265, 27.0725, 27.952, 27.2788, 26.9715, 26.1243, 24.1339, 19.3949, 18.2622, 18.8285, 19.8235, 19.3173, 18.5432, 18.8587, 19.0623, 18.7488, 18.2976, 18.5947, 18.199, 18.1179, 17.6284, 17.7679, 16.9029, 16.3563, 16.6297, 16.2328, 16.0768, 15.4877, 13.8084},
00175     // 50
00176     {47.6982, 47.6599, 48.2187, 48.9976, 47.799, 47.6627, 47.1518, 47.2944, 46.5938, 45.7772, 45.3015, 44.413, 45.3064, 48.5603, 44.2983, 47.7153, 46.2841, 47.8821, 49.4568, 44.5439, 46.6247, 48.1379, 47.481, 46.9442, 46.6015, 46.3984, 45.2186, 44.3437, 42.3589, 33.901, 33.3342, 35.0153, 34.0075, 34.3796, 33.8847, 33.8619, 34.6135, 33.2317, 32.923, 32.7936, 33.275, 31.7787, 31.579, 31.4607, 30.7226, 29.9954, 29.3432, 29.283, 27.0721, 26.4577, 25.0271},
00177     // 100
00178     {96.3077, 97.2392, 97.8974, 97.3423, 97.757, 95.2604, 93.7778, 94.6471, 95.1803, 95.4144, 92.3273, 92.4684, 91.7989, 93.0399, 99.6842, 97.0947, 90.4984, 93.7714, 95.6516, 94.7691, 94.7364, 94.8744, 95.6762, 95.4722, 96.0351, 94.78, 92.9701, 88.7097, 84.9337, 73.2059, 71.8473, 73.1861, 72.5637, 71.3653, 71.6502, 71.2387, 72.4815, 72.0133, 71.3529, 70.2482, 69.7749, 68.5522, 68.6207, 66.0551, 65.1983, 62.6396, 61.5266, 61.8448, 64.4365, 57.1366, 53.8488},
00179     // 150
00180     {143.667, 145.689, 145.478, 146.232, 146.861, 143.825, 143.449, 142.302, 141.814, 140.032, 140.079, 140.891, 134.899, 142.624, 146.557, 146.774, 144.999, 150.015, 141.507, 144.091, 145.142, 144.51, 144.444, 142.603, 143.492, 142.671, 138.839, 135.941, 129.035, 112.214, 110.3, 110.381, 112.351, 112.153, 110.842, 111.519, 110.351, 107.693, 109.415, 107.114, 105.043, 103.589, 103.44, 102.473, 101.178, 98.0667, 97.4432, 95.3034, 91.0626, 88.5847, 80.0944},
00181     // 225
00182     {217.89, 219.871, 219.975, 220.38, 217.453, 219.258, 218.675, 214.436, 211.657, 212.151, 212.167, 210.628, 200.765, 207.515, 228.515, 212.358, 223.4, 217.493, 215.625, 223.871, 217.179, 216.796, 215.475, 216.363, 213.272, 215.312, 210.065, 203.183, 197.085, 174.09, 168.86, 168.161, 168.439, 168.852, 169.556, 164.681, 167.453, 166.474, 163.668, 162.479, 162.724, 159.757, 157.43, 156.43, 152.452, 148.757, 145.13, 144.883, 139.725, 133.74, 125.22},
00183     // 300
00184     {294.586, 296.526, 294.598, 290.845, 290.474, 297.208, 287.166, 288.909, 284.869, 282.317, 285.88, 280.642, 288.213, 301.131, 301.675, 289.153, 301.031, 279.302, 286.39, 285.271, 292.151, 289.38, 289.355, 287.497, 286.483, 287.636, 281.624, 273.478, 261.234, 230.697, 225.175, 229.211, 227.32, 228.17, 229.027, 224.46, 224.174, 222.363, 222.571, 220.281, 220.046, 219.335, 211.974, 209.954, 206.11, 201.292, 198.966, 196.975, 199.925, 181.304, 169.254},
00185     // 1000  
00186     {975.353, 973.474, 994.408, 995.762, 1011.2, 1008.46, 943.555, 973.155, 956.14, 925.261, 944.485, 918.724, 920.137, 811.434, 1017.5, 994.017, 987.137, 967.662, 971.299, 979.536, 976.131, 973.112, 964.859, 960.275, 967.639, 968.457, 951.228, 929.227, 915.587, 802.177, 794.423, 799.712, 792.543, 781.901, 790.296, 778.844, 776.435, 775.26, 770.469, 766.069, 764.791, 753.17, 741., 733.149, 719., 702.91, 691.743, 683.678, 678.171, 633.365, 597.704},
00187     // 3000
00188     {2935.13, 2952.95, 2986.53, 3000., 3015.16, 3000., 2900., 2790.28, 2850.09, 2758.27, 2767.99, 2760.19, 2800., 2875.4, 3014.85, 2911.7, 2950., 2923.35, 2965.95, 2973.7, 2980.18, 2919.01, 2990.2, 2904.23, 2897.24, 2994.31, 2905.87, 2856.96, 2838.23, 2353.76, 2383.52, 2397.01, 2379.55, 2364.41, 2352.62, 2352.26, 2369.45, 2337.9, 2317.05, 2302.6, 2261.48, 2263.71, 2202.48, 2185.92, 2166.9, 2125.03, 2090.92, 2027.79, 2047.74, 1923.75, 1825.16}
00189   };
00190 
00191   double _sigmaHD_mip[maxHDe][maxHDeta] = {
00192 
00193     // 1
00194     {0.490033, 0.530364, 0.433535, 0.498202, 0.497041, 0.486203, 0.512755, 0.499658, 0.4948, 0.459523, 0.474696, 0.442108, 0.46471, 0.369876, 0.485032, 0.51068, 0.415958, 0.573592, 0.392542, 0.619513, 0.535704, 0.706111, 0.670153, 0.601184, 0.548334, 0.647127, 0.577775, 0.679877, 0.558841, 0.6579, 0.826244, 1.03785, 0.873161, 0.875499, 0.8742, 0.847838, 0.788833, 0.886185, 0.775074, 0.817156, 0.812542, 0.777236, 0.562841, 0.632774, 0.71344, 0.831268, 0.91188, 1.07673, 0, 0.561492, 0.457156},
00195     // 2
00196     {0.997523, 1.0815, 1.03206, 0.987737, 1.02756, 0.977129, 0.823759, 1.02921, 1.05878, 0.895067, 0.989425, 0.94569, 0.776582, 0.892893, 0.85173, 1.21029, 0.838721, 1.06837, 1.0762, 0.788423, 1.17579, 1.15311, 1.02557, 1.11015, 1.10078, 1.0788, 1.17456, 1.16603, 1.10146, 1.16188, 1.41014, 1.42363, 1.35378, 1.24834, 1.37034, 1.28982, 1.414, 1.35073, 1.24736, 1.22988, 1.24553, 1.36293, 1.25973, 1.26323, 1.41976, 1.32979, 1.19975, 1.0999, 0.800008, 1.1679, 1.31976},
00197     // 3
00198     {1.32347, 1.34626, 1.31517, 1.31097, 1.2683, 1.36922, 1.42574, 1.3384, 1.27861, 1.53607, 1.24031, 1.46966, 1.15817, 1.20412, 1.51432, 1.51151, 1.41024, 0.81021, 1.32938, 1.39759, 1.56962, 1.60292, 1.43744, 1.56758, 1.57192, 1.49655, 1.46193, 1.47941, 1.54567, 1.50756, 1.98572, 1.85995, 1.89017, 1.80652, 1.88426, 1.69611, 1.79637, 1.78097, 1.89756, 1.75982, 1.86481, 1.90406, 1.78612, 1.71115, 1.78846, 2.00915, 1.78856, 1.52387, 1.81234, 1.7293, 1.76507},
00199     // 5
00200     {1.9018, 1.88171, 1.69618, 1.78005, 1.97434, 1.74136, 1.62961, 1.78675, 1.88846, 1.95964, 2.08892, 1.86842, 1.55206, 2.16827, 2.04288, 1.75071, 1.55431, 1.62398, 1.81104, 2.37424, 2.36197, 2.29373, 2.13639, 2.43006, 2.22562, 2.18597, 2.28386, 2.0623, 2.14629, 1.97781, 2.74185, 2.54827, 2.83006, 2.88526, 2.76645, 2.61248, 2.79863, 2.70443, 2.57394, 2.72147, 2.81697, 2.51909, 2.51807, 2.57132, 2.69621, 2.67878, 2.69868, 2.70517, 2.91759, 2.79587, 2.68952},
00201     // 9  
00202     {2.67985, 2.56716, 2.45191, 2.3816, 3.00701, 2.76479, 2.67169, 2.37562, 2.76213, 2.51239, 3.13845, 3.10274, 2.65407, 3.04734, 2.37828, 3.36069, 3.88696, 3.64239, 3.44478, 3.27568, 3.14058, 3.66852, 2.78876, 3.20924, 3.29144, 3.1377, 3.3817, 3.21376, 3.18745, 2.74037, 3.97011, 4.27378, 4.31887, 4.11109, 4.29989, 4.20533, 4.53887, 4.19436, 4.03905, 4.22275, 4.12285, 4.14521, 3.95413, 3.97016, 3.91847, 4.1504, 3.84676, 4.38899, 3.94464, 3.77568, 3.79662},
00203     // 15
00204     {3.58321, 3.29008, 2.85212, 3.05585, 3.22757, 3.39028, 3.24481, 3.47386, 2.7888, 3.2993, 3.59659, 3.69652, 3.59352, 4.26283, 3.3449, 3.87697, 4.89532, 4.15995, 3.63013, 2.94559, 3.91126, 3.6373, 3.19837, 3.65419, 3.87124, 4.16362, 3.45638, 3.93285, 3.58253, 4.15114, 6.21693, 5.84595, 6.21677, 5.94016, 5.94956, 6.17689, 6.19529, 6.17602, 5.9251, 5.99188, 6.32856, 5.93335, 6.07306, 5.97594, 5.94576, 5.73293, 5.59722, 5.6343, 5.92824, 4.99017, 5.37399},
00205     // 20
00206     {3.53674, 3.64586, 4.09251, 3.39787, 3.5501, 4.03945, 3.38735, 3.79275, 3.41168, 3.81611, 4.85447, 3.7999, 4.13487, 4.79688, 4.4635, 5.60833, 2.76873, 2.49086, 3.81783, 5.48109, 4.84178, 3.69169, 4.17094, 4.33253, 4.02229, 4.06761, 4.40184, 4.63737, 4.42183, 4.75102, 7.28834, 7.22681, 7.29986, 7.33678, 7.19693, 7.21815, 7.27432, 6.89657, 7.4455, 7.34935, 7.40161, 7.31724, 7.11227, 6.92616, 7.10663, 6.96595, 6.62997, 6.50278, 6.83112, 6.18473, 6.25886},
00207     // 30 
00208     {4.99525, 3.95108, 4.2518, 4.03672, 4.12524, 5.12527, 4.46685, 4.73984, 4.63663, 5.13869, 5.33511, 5.29354, 5.28526, 5.74142, 4.47078, 5.46928, 3.34978, 5.33509, 4.86592, 5.42919, 5.76262, 5.94847, 5.19941, 4.67091, 5.42318, 5.08436, 4.93295, 4.84428, 5.23337, 6.17231, 8.85063, 8.9708, 9.71694, 8.84191, 9.02549, 9.10309, 9.01366, 8.9174, 8.87092, 9.12399, 8.639, 8.79333, 8.47035, 8.8469, 8.49896, 8.34351, 8.54963, 8.22855, 7.95291, 8.39018, 7.42634},
00209     // 50
00210     {5.64853, 6.00047, 5.41951, 5.8425, 6.01605, 6.01948, 5.76448, 6.11802, 5.93631, 6.2068, 6.73926, 6.93765, 8.20899, 8.70429, 7.36674, 5.8744, 6.40406, 5.34649, 5.23017, 5.02606, 6.68607, 6.04322, 6.65658, 6.74295, 6.14987, 6.31338, 6.55816, 6.29881, 6.56812, 9.09432, 13.4606, 14.087, 13.5382, 14.0253, 13.8102, 14.3097, 14.0878, 13.7311, 13.1407, 13.4323, 13.5002, 13.2932, 13.3055, 13.5501, 13.4548, 12.6071, 12.9463, 12.8391, 12.203, 11.9572, 12.0717},
00211     // 100
00212     {9.73919, 9.92526, 7.09079, 8.22096, 11.3752, 9.08709, 11.0748, 8.67264, 10.2095, 10.9939, 12.0066, 11.3671, 13.769, 14.7976, 9.60792, 6.6525, 2.11891, 6.90674, 9.93764, 6.67427, 9.11527, 10.7706, 9.21961, 9.00826, 9.64789, 9.29469, 9.64614, 8.84251, 10.5457, 12.7064, 21.6619, 22.6707, 22.0468, 21.8025, 21.9436, 21.3173, 21.7804, 21.4801, 21.1596, 21.3004, 21.2974, 21.4119, 21.3619, 21.3372, 20.9671, 20.5847, 20.3922, 20.358, 21.6135, 20.1588, 19.9312},
00213     // 150
00214     {15.5329, 12.7477, 9.95406, 9.66099, 12.8345, 12.1311, 12.3813, 13.9387, 13.821, 14.4616, 14.4255, 15.3892, 17.6612, 17.454, 9.86157, 7.65925, 5.05937, 6.34449, 6.44799, 13.5942, 8.81472, 11.3, 9.21299, 11.2525, 12.2845, 11.5771, 11.74, 13.2182, 12.0742, 20.6002, 29.5813, 28.4341, 29.5001, 28.6255, 28.1345, 28.7621, 27.8616, 28.3656, 29.1136, 29.3842, 29.0655, 29.2517, 27.6812, 29.9909, 28.2786, 28.3108, 28.1117, 28.2952, 25.4367, 26.3312, 26.9351},
00215     // 225
00216     {17.8521, 13.7806, 13.7297, 16.8072, 16.9584, 15.7035, 14.0679, 16.7879, 18.1308, 18.7877, 19.8821, 22.0107, 27.7637, 35.1892, 16.5972, 7.22732, 5.49866, 18.4664, 18.3284, 14.3375, 13.3782, 14.1036, 12.7873, 12.8817, 15.1683, 13.011, 13.6216, 13.7811, 14.4304, 26.1577, 32.9487, 33.7565, 34.8785, 34.7315, 35.1025, 32.9536, 36.1751, 34.125, 34.2612, 35.7677, 34.4184, 34.1413, 33.8299, 35.0248, 33.8759, 34.7572, 34.7386, 33.3108, 32.2063, 32.9175, 32.4289},
00217     // 300
00218     {16.1651, 15.1326, 14.8889, 20.7117, 26.8926, 13.1227, 17.6768, 18.8246, 27.6449, 24.8985, 26.7077, 25.0657, 25.0652, 38.0849, 19.6062, 15.7908, 27.0545, 17.8664, 16.645, 12.2169, 18.1504, 13.9039, 15.1734, 14.1026, 16.8269, 15.405, 15.7001, 16.2013, 19.2775, 34.2563, 39.7292, 38.1911, 38.8438, 38.7878, 39.9107, 39.9354, 39.1624, 38.7563, 39.0682, 39.782, 39.3639, 39.1952, 38.5359, 36.9295, 38.0356, 38.9107, 36.7962, 38.9947, 40.8741, 37.7289, 37.0498},
00219     // 1000  
00220     {52.5675, 63.3359, 42.4873, 45.6187, 49.3626, 34.15, 41.7384, 60.5165, 62.058, 67.8197, 83.25, 80.1417, 87.284, 50., 24.0381, 26.1736, 30.8678, 65.2965, 33.37, 31.0188, 35.2573, 43.4082, 38.3785, 36.9775, 36.2914, 36.9192, 35.5243, 40.8982, 38.1398, 113.389, 122.105, 121.542, 121.557, 119.535, 119.485, 122.162, 125.814, 126.912, 121.749, 123.422, 124.672, 124.29, 125.71, 125.09, 127.452, 124.789, 129.179, 131.48, 126.986, 127.015, 137.474},
00221     // 3000
00222     {150., 150., 150., 150., 150., 150., 150., 150., 150., 150., 115.798, 222.73, 150., 150., 150, 129.2676, 120., 129.8997, 121.2363, 120.9038, 125.5682, 121.2128, 134.9863, 131.5588, 122.143, 121.9943, 125.5265, 129.3338, 71.8967, 186.782, 211.359, 209.372, 209.512, 231.488, 232.585, 229.347, 223.462, 234.988, 226.747, 235.165, 247.826, 235.776, 234.833, 237.132, 231.817, 249.343, 260.783, 253.386, 249.56, 247.242, 250.905}
00223   };
00224 
00225 
00226   double _meanHD_nomip[maxHDe][maxHDeta] = {
00227 
00228     // 1
00229     {0.948964, 0.94232, 0.951108, 0.955977, 0.950837, 0.941834, 0.941552, 0.944649, 0.900092, 0.882185, 0.857801, 0.854561, 0.81639, 0.983094, 1.41231, 1.75401, 1.91298, 1.88017, 1.74013, 1.64027, 1.48822, 1.32773, 1.25747, 1.27203, 1.26125, 1.06416, 1.11258, 1.26627, 1.12217, 0.941239, 0.277577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00230     // 2  
00231     {1.48562, 1.54014, 1.51304, 1.49259, 1.46182, 1.47805, 1.45557, 1.44123, 1.37693, 1.37588, 1.35357, 1.27549, 1.28914, 1.4304, 1.991, 2.44264, 2.82995, 2.67674, 2.36148, 2.2129, 2.10271, 1.95112, 1.75655, 1.67158, 1.74121, 1.52589, 1.53362, 1.51889, 1.37023, 1.40654, 2.44184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00232     // 3
00233     {2.17581, 2.30829, 2.23592, 2.20511, 2.21035, 2.12495, 2.06306, 2.09112, 2.07066, 1.9724, 1.92428, 1.77065, 1.80147, 1.9356, 2.53679, 3.16825, 3.45075, 3.30796, 3.13178, 2.77969, 2.67209, 2.56075, 2.40433, 2.32528, 2.13364, 1.96522, 1.94244, 1.99321, 1.80483, 1.7513, 3.19768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00234     // 5
00235     {3.83663, 3.95957, 3.83468, 3.86447, 3.71773, 3.6822, 3.66723, 3.5593, 3.49488, 3.40918, 3.28059, 3.13951, 3.08085, 3.27171, 3.98645, 4.66822, 4.88823, 4.78944, 4.53538, 4.25406, 4.0844, 3.80465, 3.64666, 3.5252, 3.19988, 3.19036, 2.99613, 2.87369, 2.6009, 2.09142, 2.26148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00236     // 9  
00237     {7.33096, 7.18545, 7.18698, 7.31392, 7.1404, 6.94851, 7.00748, 6.816, 6.58667, 6.50255, 6.33378, 6.31494, 6.22511, 6.11153, 7.08688, 7.89748, 7.77793, 7.81633, 7.69758, 7.43388, 6.97497, 6.84561, 6.44661, 6.31444, 5.93032, 5.70113, 5.63984, 5.17491, 4.58848, 3.8904, 3.23472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00238     // 15
00239     {12.0623, 12.15, 12.2687, 12.2178, 12.0445, 11.8572, 11.6973, 11.5392, 11.3208, 11.2944, 11.026, 10.6254, 10.2671, 10.5677, 11.583, 12.9551, 12.7293, 12.5954, 12.1806, 12.023, 11.7125, 11.104, 11.1902, 10.6872, 10.3689, 10.1382, 9.85447, 9.19173, 8.25078, 7.13899, 5.35188, 2.83066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00240     // 20
00241     {16.8519, 16.6539, 16.925, 17.0493, 16.6029, 16.409, 16.3127, 16.0227, 15.9752, 15.8965, 15.437, 15.4817, 14.9769, 15.1833, 16.3172, 17.6568, 17.4656, 17.2706, 17.0466, 16.9251, 16.4854, 16.1013, 15.7233, 15.357, 14.9625, 14.4617, 13.9107, 13.4021, 12.1417, 10.2327, 6.65205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00242     // 30 
00243     {26.3349, 26.1412, 26.1147, 26.1084, 25.976, 25.899, 25.6029, 25.1901, 25.0209, 24.8052, 24.3725, 24.0223, 23.391, 23.5983, 24.9266, 27.0901, 26.5888, 26.9638, 26.5324, 26.1992, 26.0606, 25.3993, 24.8119, 24.5037, 24.1828, 23.3706, 22.5645, 21.4124, 20.2532, 16.3831, 11.5615, 20.6587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00244     // 50
00245     {44.1547, 44.0467, 43.9365, 44.0498, 43.7513, 43.4453, 42.8447, 42.3955, 42.0814, 41.9082, 41.6014, 40.2825, 39.7016, 40.5845, 42.1311, 45.6416, 44.5564, 44.9085, 44.7493, 44.4291, 43.6602, 43.0618, 42.4827, 42.0032, 41.2821, 40.1834, 39.0685, 37.7727, 35.3659, 30.3144, 20.5141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00246     // 100
00247     {89.0166, 88.9248, 89.3223, 89.5505, 88.4924, 87.5773, 87.6614, 87.7166, 85.7964, 85.5541, 83.907, 83.2024, 81.1869, 82.2941, 86.4585, 92.2372, 90.6419, 89.9531, 89.3483, 89.171, 89.1015, 87.886, 87.2609, 85.9614, 84.7605, 83.7837, 81.5787, 79.5635, 75.1272, 65.7167, 51.2109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00248     // 150
00249     {134.598, 134.039, 135.167, 134.494, 133.55, 132.196, 132.979, 131.823, 130.269, 129.877, 129.1, 126.099, 124.784, 124.363, 130.512, 139.355, 136.629, 135.035, 134.898, 136.392, 135.279, 132.335, 132.712, 131.439, 129.086, 127.538, 125.224, 122.527, 116.956, 105.373, 110.302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00250     // 225
00251     {203.056, 202.709, 202.892, 205.342, 200.989, 200.286, 198.402, 198.383, 196.941, 194.556, 194.642, 191.816, 188.203, 190.178, 200.94, 209.893, 207.013, 203.406, 206.392, 204.325, 203.063, 200.838, 200.731, 197.886, 197.04, 194.387, 191.216, 187.552, 179.688, 165.122, 175.858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00252     // 300
00253     {271.611, 271.175, 272.363, 273.266, 270.596, 267.422, 267.057, 265.013, 264.023, 262.044, 261.755, 257.059, 250.739, 252.168, 258.005, 280.12, 274.58, 273.867, 275.409, 273.252, 271.811, 271.174, 268.42, 266.73, 265.58, 262.759, 257.754, 251.671, 243.848, 224.828, 214.838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00254     // 1000  
00255     {906.463, 916.235, 916.971, 920.578, 915.364, 898.704, 894.27, 889.057, 876.206, 875.216, 871.047, 860.051, 848.685, 867.439, 885.896, 931.649, 927.031, 915.888, 915.764, 912.19, 902.106, 904.573, 899.107, 895.701, 888.59, 882.287, 870.578, 864.449, 846.279, 764.165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00256     // 3000
00257     {2690.87, 2661.26, 2480.27, 2707.21, 2594.46, 2796.74, 2654.65, 2550.28, 2546.36, 2514.32, 2560.41, 2557.69, 2547.25, 2395, 2589.41, 2954.06, 2722.63, 2824.38, 2778.04, 2757.99, 2752.22, 2706.55, 2711.21, 2734.3, 2748.25, 2700.06, 2662.85, 2617.54, 2568.26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
00258   };
00259 
00260 
00261   double _sigmaHD_nomip[maxHDe][maxHDeta] = {
00262 
00263     // 1
00264     {0.466247, 0.440109, 0.437298, 0.430133, 0.418546, 0.380906, 0.386529, 0.406052, 0.393692, 0.372385, 0.377631, 0.350426, 0.333863, 0.438495, 0.583456, 0.62685, 0.597492, 0.645771, 0.6366, 0.628432, 0.56761, 0.641748, 0.567627, 0.591967, 0.579692, 0.522242, 0.53627, 0.553841, 0.451038, 0.422124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00265     // 2
00266     {0.758477, 0.826853, 0.765458, 0.743586, 0.725505, 0.782088, 0.757382, 0.748993, 0.70502, 0.708197, 0.783205, 0.634504, 0.69647, 0.730523, 0.935662, 1.0627, 1.12114, 1.11007, 1.08509, 0.997902, 1.04368, 0.974941, 0.929926, 0.966652, 0.98367, 0.956365, 0.975184, 0.967574, 0.820016, 0.971484, 0.877667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00267     // 3
00268     {1.14396, 1.23176, 1.11325, 1.08568, 1.07378, 1.11495, 1.0188, 1.0839, 1.06022, 1.05346, 1.03335, 0.911993, 0.916675, 0.979711, 1.27474, 1.36779, 1.48986, 1.34921, 1.41418, 1.33332, 1.32676, 1.37969, 1.46906, 1.31727, 1.38304, 1.24866, 1.15109, 1.22767, 1.25968, 1.154, 1.55947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00269     // 5
00270     {1.58351, 1.61056, 1.60437, 1.475, 1.56522, 1.59117, 1.60579, 1.60455, 1.61514, 1.62515, 1.50218, 1.51904, 1.55301, 1.65246, 2.01446, 2.00946, 2.1005, 1.98962, 2.03078, 2.0045, 2.11343, 1.99941, 2.07625, 2.08901, 1.88057, 1.83726, 1.92367, 1.74014, 1.71111, 1.39314, 1.53543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00271     // 9  
00272     {2.37997, 2.38645, 2.29157, 2.28545, 2.41044, 2.34692, 2.35371, 2.37615, 2.35705, 2.31735, 2.42325, 2.57925, 2.46426, 2.53557, 3.17194, 2.98614, 3.11999, 3.08252, 3.12468, 3.09011, 2.98069, 3.12631, 3.04551, 2.99623, 2.82624, 3.08572, 2.8858, 2.78696, 2.7069, 2.31551, 2.03209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00273     // 15
00274     {2.96981, 2.88621, 2.8029, 2.91733, 2.88919, 3.01595, 2.91112, 2.86828, 2.85448, 3.25246, 3.00353, 3.03943, 3.10345, 3.35329, 4.13982, 3.99733, 3.98324, 3.85731, 3.82006, 3.67547, 3.68277, 3.60511, 3.8331, 3.69059, 3.59195, 3.78455, 3.49175, 3.51433, 3.23029, 3.25019, 4.50196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00275     // 20
00276     {3.49149, 3.44976, 3.54228, 3.45942, 3.45637, 3.42628, 3.61779, 3.50426, 3.69151, 3.70395, 3.70333, 3.99621, 3.93288, 4.06807, 4.81683, 4.79121, 4.49484, 4.55595, 4.51115, 4.44616, 4.49696, 4.43949, 4.38707, 4.41133, 4.31592, 4.37403, 4.19999, 4.06729, 4.1396, 4.01051, 3.47011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00277     // 30 
00278     {4.35475, 4.67653, 4.25421, 4.30121, 4.49441, 4.45067, 4.44816, 4.52709, 4.68955, 5.12789, 4.80505, 5.03039, 5.20752, 5.76107, 6.48702, 5.38695, 5.83015, 5.46905, 5.64145, 5.68013, 5.66492, 5.48386, 5.43619, 5.58733, 5.39637, 5.55483, 5.44857, 4.8358, 5.1801, 4.93687, 3.96695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00279     // 50
00280     {6.10027, 5.93972, 5.91983, 5.86343, 5.95998, 6.16177, 6.42329, 6.16425, 6.36983, 6.52328, 6.90349, 7.10031, 7.1156, 8.31224, 8.61658, 6.86372, 7.32435, 7.74376, 7.18775, 7.62187, 7.40278, 7.26929, 7.02484, 7.70488, 7.23433, 7.15334, 7.4646, 6.91855, 7.54337, 7.426, 12.2277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00281     // 100
00282     {8.80926, 8.60537, 9.1106, 9.03406, 9.26793, 9.42893, 9.96896, 9.98629, 10.3482, 10.5935, 10.8561, 11.9344, 12.297, 14.6568, 14.7604, 10.7917, 10.4405, 10.8247, 10.9242, 10.1337, 10.7987, 11.2976, 11.1306, 11.3631, 10.9815, 11.3544, 11.0625, 10.9819, 11.1564, 13.0105, 18.4554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00283     // 150
00284     {11.8965, 11.7766, 12.1927, 12.2483, 12.7158, 12.2447, 13.0917, 13.5579, 13.5365, 15.0623, 15.2665, 15.4531, 16.3194, 19.4575, 19.3891, 13.1361, 13.809, 13.4685, 12.8597, 13.4501, 14.2348, 14.3763, 13.676, 14.4942, 14.6024, 13.8535, 14.4641, 14.5161, 14.6678, 16.1901, 2.57104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00285     // 225
00286     {16.2251, 15.8354, 16.6789, 16.2709, 16.6725, 16.8202, 18.0403, 18.3857, 18.7583, 18.8643, 19.7971, 21.7215, 23.256, 25.7725, 26.3572, 16.8278, 18.0785, 17.7827, 17.0253, 17.4367, 17.961, 18.1906, 18.9534, 20.2112, 17.8282, 18.8618, 18.6992, 18.7263, 18.4844, 20.996, 27.5488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00287     // 300
00288     {20.439, 19.2206, 20.186, 20.0251, 20.3165, 20.2644, 20.2143, 21.4909, 23.4092, 24.4115, 25.112, 28.2945, 28.3943, 32.7937, 35.2629, 19.731, 20.2977, 22.2025, 21.0784, 20.3503, 21.1633, 21.7644, 23.4304, 21.8679, 22.0594, 23.3655, 23.5655, 20.6678, 22.1879, 23.1144, 19.9985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00289     // 1000  
00290     {52.9663, 48.0519, 47.4125, 42.5804, 64.3721, 56.243, 60.2385, 61.8364, 60.3981, 55.7629, 57.8917, 66.0476, 73.0758, 75.0852, 128.94, 40.5088, 45.8946, 46.7171, 45.5946, 40.915, 44.3987, 45.3782, 39.0812, 40.7554, 45.4572, 44.196, 47.5892, 43.3159, 60.4667, 23.3458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
00291     // 3000
00292     {119.221, 164.929, 153.0803, 176.326, 94.9388, 136.348, 105.755, 182.901, 183.245, 229.638, 249.6, 185.337, 195.058, 174.548, 0, 0, 87.6332, 102.13, 141.983, 120.685, 131.263, 151.295, 142.537, 160.674, 126.879, 147.193, 123.606, 125.998, 149.884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
00293   };
00294 
00295 
00296 
00297   // e-gamma mean response and sigma in HF 
00298   double _meanEM[maxEMe][maxEMeta] = 
00299     { 
00300       { 8.45992 , 8.63583 , 8.02996 , 8.97919 , 8.82544 , 8.25 , 8.07106 , 8.34085 , 7.94789 , 8.64608 , 8.54919 , 7.93515 , 8.24598 , 8.27851 , 6.99648 , 6.38774 , 1.96863 , 1.99444 , 0.463971 , 1.85597 },
00301       { 27.0178 , 27.5436 , 27.2402 , 27.033 , 27.3868 , 25.6628 , 27.281 , 28.5243 , 26.2394 , 26.6339 , 25.1889 , 26.7813 , 25.7826 , 25.489 , 25.5799 , 20.935 , 8.29258 , 7.65 , 1.63656 , 6.04511 },
00302       { 96.8961 , 94.332 , 94.5504 , 98.344 , 96.5179 , 93.4123 , 94.3248 , 93.201 , 93.8986 , 94.2246 , 94.5596 , 91.9108 , 91.6629 , 93.0828 , 90.2524 , 82.5382 , 38.8545 , 52.6627 , 4.11778 , 23.5803 },
00303       { 314.837 , 306.694 , 314.115 , 305.044 , 305.018 , 308.364 , 306.552 , 302.859 , 299.284 , 300.775 , 303.902 , 297.587 , 298.982 , 297.452 , 288.804 , 277.016 , 221.93 , 230.533 , 14.5807 , 76.9597 },
00304       { 780.491 , 779.594 , 764.682 , 777.392 , 772.422 , 773.774 , 765.144 , 758.003 , 756.913 , 753.151 , 761.062 , 742.631 , 736.608 , 745.717 , 718.31 , 704.612 , 676.861 , 676.872 , 30.3429 , 231.996 },
00305       { 1123.48 , 1138.38 , 1139.27 , 1133.34 , 1142.2 , 1120.54 , 1100.99 , 1113.59 , 1092.92 , 1105.28 , 1110.92 , 1079.62 , 1079.63 , 1073.68 , 1066.91 , 1029.93 , 936.019 , 975.08 , 55.2746 , 322.708 },
00306       { 3418.28 , 3448.06 , 3415.97 , 3346.42 , 3404.7 , 3374.67 , 3372.47 , 3351.11 , 3316 , 3337.46 , 3309.82 , 3247.97 , 3241.04 , 3271.23 , 3161.16 , 3121.28 , 3062.65 , 3175.16 , 126.643 , 982.95 }
00307     }; 
00308 
00309   double _sigmaEM[maxEMe][maxEMeta] =
00310     {
00311       { 7.34058 , 7.08079 , 7.23214 , 8.06263 , 7.30624 , 7.08314 , 7.12469 , 7.18147 , 7.17955 , 7.28179 , 7.56118 , 7.0407 , 7.59106 , 7.49638 , 6.75414 , 7.17367 , 4.70368 , 4.42008 , 2.05961 , 4.8895 },
00312       {  12.9084 , 12.6178 , 12.4915 , 12.3874 , 13.2901 , 11.8766 , 11.9469 , 14.1489 , 12.9496 , 12.2286 , 12.3921 , 14.045 , 13.4044 , 13.6155 , 14.0631 , 14.6692 , 13.6443 , 13.6275 , 6.82313 , 11.9411 },
00313       { 33.2929 , 32.7502 , 31.5466 , 34.8465 , 34.189 , 30.3185 , 32.5117 , 35.5203 , 36.7793 , 32.5331 , 32.9382 , 33.3213 , 33.8772 , 34.2328 , 34.0775 , 40.2445 , 47.9594 , 48.9547 , 19.6232 , 43.8259 },
00314       { 65.6405 , 64.1397 , 62.6258 , 64.9663 , 63.5784 , 68.6845 , 68.383 , 63.4324 , 61.6744 , 61.3449 , 66.4723 , 66.5365 , 71.3094 , 69.2828 , 68.652 , 79.5868 , 123.485 , 123.836 , 59.2157 , 130.709 },
00315       { 126.574 , 131.893 , 129.359 , 138.861 , 127.105 , 143.23 , 141.569 , 136.978 , 141.678 , 136.704 , 151.253 , 149.417 , 150.685 , 140.786 , 148.325 , 161.185 , 262.263 , 167.322 , 146.05 , 337.333 },
00316       { 205.354 , 218.242 , 224.552 , 237.143 , 238.286 , 244.237 , 230.449 , 243.406 , 250.26 , 260.09 , 248.435 , 247.354 , 272.659 , 246.76 , 286.364 , 259.995 , 283.664 , 363.005 , 249.778 , 476.116 },
00317       { 399.332 , 426.213 , 439.176 , 461.66 , 480.137 , 438.204 , 437.622 , 451.579 , 509.787 , 487.307 , 482.618 , 514.53 , 554.844 , 506.243 , 525.057 , 584.281 , 613.339 , 537.544 , 620.743 , 1434. }
00318 
00319     }; 
00320 
00321 
00322   // MUON probability histos for bin size = 0.25 GeV (0-10 GeV, 40 bins)  
00323 
00324   double _responseMU[maxMUe][maxMUeta][maxMUbin] = {
00325     { 
00326       // 10 GeV
00327       {1, 0.999009, 0.999009, 0.999009, 0.997027, 0.981169, 0.949455, 0.922696, 0.863231, 0.782953, 0.665015, 0.555996, 0.443013, 0.322101, 0.230922, 0.162537, 0.114965, 0.0812686, 0.0604559, 0.0475719, 0.0376611, 0.0307235, 0.0178394, 0.0138751, 0.0099108, 0.00792864, 0.00792864, 0.00693756, 0.00396432, 0.00297324, 0.00297324, 0.00198216, 0.00198216, 0.00198216, 0.00198216, 0.00198216, 0.00198216, 0.00099108, 0.00099108, 0}, 
00328       {1, 1, 1, 0.998037, 0.993131, 0.976447, 0.908734, 0.843965, 0.698724, 0.546614, 0.437684, 0.336605, 0.245339, 0.177625, 0.123651, 0.077527, 0.063788, 0.0451423, 0.0353288, 0.0284593, 0.0245339, 0.0215898, 0.0186457, 0.0147203, 0.013739, 0.00981354, 0.00490677, 0.00490677, 0.00392542, 0.00294406, 0.00294406, 0.00196271, 0.00196271, 0.00196271, 0.00196271, 0.000981354, 0.000981354, 0.000981354, 0.000981354, 0}, 
00329       {1, 1, 1, 1, 0.99854, 0.986861, 0.964964, 0.941606, 0.870073, 0.747445, 0.640876, 0.562044, 0.426277, 0.344526, 0.255474, 0.191241, 0.135766, 0.109489, 0.0729927, 0.0525547, 0.0423358, 0.0291971, 0.0233577, 0.0175182, 0.0131387, 0.010219, 0.00437956, 0.00437956, 0.00437956, 0.00291971, 0.00145985, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
00330       {1, 1, 1, 1, 1, 1, 0.987603, 0.982782, 0.9573, 0.909091, 0.85124, 0.800275, 0.727961, 0.626722, 0.536501, 0.447658, 0.341598, 0.274793, 0.208678, 0.153581, 0.125344, 0.0971074, 0.0764463, 0.0633609, 0.0495868, 0.0371901, 0.0316804, 0.0213499, 0.0172176, 0.0144628, 0.0110193, 0.00964187, 0.00826446, 0.00757576, 0.00688705, 0.00413223, 0.00344353, 0.00206612, 0.00206612, 0.00206612}, 
00331       {1, 0.995918, 0.995918, 0.995918, 0.953061, 0.846939, 0.75102, 0.634694, 0.512245, 0.355102, 0.263265, 0.218367, 0.136735, 0.0836735, 0.0612245, 0.0469388, 0.0326531, 0.0265306, 0.0142857, 0.0102041, 0.00408163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0},
00332       {1, 0.999541, 0.999541, 0.999541, 0.996784, 0.977257, 0.977257, 0.909028, 0.909028, 0.769354, 0.698369, 0.698369, 0.455088, 0.244659, 0.244429, 0.129566, 0.129336, 0.0884448, 0.0443372, 0.0438778, 0.0238916, 0.0238916, 0.0130944, 0.00987824, 0.00735125, 0.00574317, 0.00436481, 0.00229727, 0.00229727, 0.00160809, 0.00160809, 0.00160809, 0.00114863, 0.00114863, 0.000459453, 0.000229727, 0.000229727, 0.000229727, 0.000229727, 0}
00333     },
00334     //30 GeV
00335     {
00336       {1, 1, 1, 1, 1, 0.997006, 0.981038, 0.963074, 0.928144, 0.852295, 0.761477, 0.662675, 0.538922, 0.399202, 0.299401, 0.234531, 0.190619, 0.154691, 0.125749, 0.0918164, 0.0718563, 0.0638723, 0.0568862, 0.0399202, 0.0319361, 0.0259481, 0.0199601, 0.0159681, 0.0149701, 0.011976, 0.00898204, 0.00798403, 0.00299401, 0.00299401, 0.00299401, 0.00299401, 0.00199601, 0.00199601, 0.000998004, 0.000998004}, 
00337       {1, 0.998024, 0.998024, 0.998024, 0.996047, 0.982213, 0.927866, 0.885375, 0.791502, 0.601779, 0.477273, 0.383399, 0.29249, 0.205534, 0.177866, 0.126482, 0.100791, 0.0790514, 0.0494071, 0.0375494, 0.0286561, 0.0217391, 0.0217391, 0.0158103, 0.0128458, 0.0118577, 0.0108696, 0.00988142, 0.00889328, 0.00889328, 0.00889328, 0.00790514, 0.00592885, 0.00592885, 0.00395257, 0.00197628, 0.000988142, 0.000988142, 0, 0}, 
00338       {1, 1, 1, 1, 1, 0.997041, 0.97929, 0.964497, 0.903846, 0.803254, 0.681953, 0.594675, 0.5, 0.360947, 0.298817, 0.214497, 0.150888, 0.130178, 0.0872781, 0.0695266, 0.0591716, 0.0384615, 0.0340237, 0.0251479, 0.0192308, 0.0177515, 0.0177515, 0.0162722, 0.0162722, 0.0133136, 0.010355, 0.00739645, 0.00443787, 0.00443787, 0.00443787, 0.00443787, 0.00295858, 0.00295858, 0, 0}, 
00339       {1, 1, 1, 1, 1, 0.999306, 0.997917, 0.997222, 0.986111, 0.953472, 0.901389, 0.865972, 0.775, 0.6625, 0.603472, 0.501389, 0.402083, 0.349306, 0.264583, 0.220833, 0.194444, 0.145139, 0.119444, 0.09375, 0.0763889, 0.0625, 0.0472222, 0.0368056, 0.0326389, 0.0291667, 0.0201389, 0.0145833, 0.0145833, 0.0111111, 0.00833333, 0.00694444, 0.00486111, 0.00416667, 0.00208333, 0.000694444}, 
00340       {1, 0.991803, 0.991803, 0.991803, 0.969262, 0.881148, 0.762295, 0.67623, 0.532787, 0.409836, 0.295082, 0.243852, 0.188525, 0.139344, 0.122951, 0.0778689, 0.0532787, 0.0471311, 0.0368852, 0.0286885, 0.0286885, 0.022541, 0.0184426, 0.0163934, 0.0163934, 0.0122951, 0.0122951, 0.00819672, 0.00819672, 0.00819672, 0.00819672, 0.00614754, 0.00204918, 0.00204918, 0.00204918, 0.00204918, 0, 0, 0, 0}, 
00341       {1, 0.999304, 0.999304, 0.999304, 0.998609, 0.990958, 0.990958, 0.952469, 0.952237, 0.819615, 0.777417, 0.777417, 0.563877, 0.332251, 0.332251, 0.190587, 0.190587, 0.157663, 0.0987712, 0.0987712, 0.061674, 0.061674, 0.0377927, 0.0352423, 0.0268954, 0.0257361, 0.0234176, 0.0132159, 0.0127521, 0.0106654, 0.0106654, 0.00881057, 0.00394157, 0.00394157, 0.00370971, 0.001623, 0.001623, 0.000927429, 0.000927429, 0.000695572}
00342     },
00343     // 100 GeV
00344     {
00345       {1, 1, 1, 1, 1, 0.998976, 0.9826, 0.971341, 0.947799, 0.895599, 0.804504, 0.73695, 0.650972, 0.520983, 0.417605, 0.350051, 0.286592, 0.239509, 0.192426, 0.146366, 0.125896, 0.106448, 0.0921187, 0.073695, 0.0593654, 0.0470829, 0.0388946, 0.0286592, 0.0225179, 0.0214944, 0.0184237, 0.0153531, 0.0143296, 0.011259, 0.00921187, 0.00716479, 0.00716479, 0.00511771, 0.00409417, 0.00307062}, 
00346       {1, 1, 1, 1, 0.999004, 0.989044, 0.949203, 0.922311, 0.850598, 0.724104, 0.600598, 0.510956, 0.432271, 0.334661, 0.293825, 0.217131, 0.184263, 0.164343, 0.123506, 0.10757, 0.0916335, 0.0717131, 0.062749, 0.0507968, 0.0418327, 0.0408367, 0.0328685, 0.0278884, 0.0268924, 0.0229084, 0.0199203, 0.0179283, 0.0149402, 0.0119522, 0.0109562, 0.00996016, 0.00896414, 0.00697211, 0.00498008, 0.00199203},
00347       {1, 1, 1, 1, 1, 0.994048, 0.985119, 0.974702, 0.934524, 0.827381, 0.708333, 0.639881, 0.5625, 0.450893, 0.392857, 0.316964, 0.258929, 0.235119, 0.162202, 0.130952, 0.120536, 0.0907738, 0.078869, 0.0669643, 0.0625, 0.0565476, 0.047619, 0.0357143, 0.0342262, 0.0282738, 0.0208333, 0.0208333, 0.016369, 0.0133929, 0.0119048, 0.0104167, 0.00446429, 0.00446429, 0.0014881, 0.0014881}, 
00348       {1, 0.999281, 0.999281, 0.999281, 0.999281, 0.999281, 0.997124, 0.996405, 0.991373, 0.966211, 0.925953, 0.893602, 0.839684, 0.742631, 0.695902, 0.597412, 0.507549, 0.470884, 0.38821, 0.327822, 0.295471, 0.230769, 0.199856, 0.166068, 0.136592, 0.119339, 0.0941769, 0.0754853, 0.069734, 0.0603882, 0.0510424, 0.0409777, 0.0359454, 0.0287563, 0.0201294, 0.0143781, 0.0107836, 0.00790798, 0.00647017, 0.00359454}, 
00349       {1, 0.997934, 0.997934, 0.997934, 0.987603, 0.92562, 0.834711, 0.77686, 0.654959, 0.518595, 0.409091, 0.353306, 0.299587, 0.216942, 0.206612, 0.161157, 0.130165, 0.123967, 0.0909091, 0.0867769, 0.0681818, 0.053719, 0.0433884, 0.035124, 0.0330579, 0.0330579, 0.0289256, 0.0268595, 0.0227273, 0.0227273, 0.0206612, 0.018595, 0.0123967, 0.0103306, 0.00619835, 0.00619835, 0.00413223, 0.00413223, 0.00206612, 0.00206612},
00350       {1, 1, 1, 1, 0.999765, 0.995535, 0.9953, 0.970153, 0.969918, 0.881316, 0.853584, 0.853584, 0.670035, 0.441833, 0.441833, 0.286251, 0.286016, 0.251234, 0.171798, 0.171798, 0.114454, 0.114454, 0.0777908, 0.0747356, 0.0571093, 0.0552291, 0.053349, 0.0293772, 0.0293772, 0.026557, 0.0249119, 0.0211516, 0.012691, 0.0115159, 0.0110458, 0.00658049, 0.00634548, 0.00305523, 0.00305523, 0.00188014}
00351     },
00352     // 300 GeV
00353     {
00354       {1, 1, 1, 1, 1, 0.997817, 0.99345, 0.983624, 0.966157, 0.933406, 0.873362, 0.815502, 0.74345, 0.64083, 0.558952, 0.479258, 0.419214, 0.379913, 0.325328, 0.270742, 0.239083, 0.19869, 0.167031, 0.141921, 0.113537, 0.0971616, 0.0840611, 0.0687773, 0.058952, 0.0436681, 0.0393013, 0.0327511, 0.0305677, 0.0262009, 0.0196507, 0.0163755, 0.0120087, 0.00982533, 0.00873362, 0.00327511}, 
00355       {1, 1, 1, 1, 1, 0.996865, 0.972832, 0.948798, 0.904911, 0.802508, 0.719958, 0.649948, 0.584117, 0.491118, 0.46604, 0.364681, 0.331243, 0.308255, 0.244514, 0.221526, 0.202717, 0.169279, 0.15256, 0.126437, 0.111808, 0.106583, 0.0909091, 0.0783699, 0.0710554, 0.0574713, 0.0501567, 0.045977, 0.0376176, 0.0344828, 0.030303, 0.0261233, 0.0188088, 0.0135841, 0.0104493, 0.00522466}, 
00356       {1, 1, 1, 1, 1, 0.998415, 0.993661, 0.988906, 0.977813, 0.935024, 0.858954, 0.812995, 0.762282, 0.662441, 0.622821, 0.505547, 0.445325, 0.426307, 0.329635, 0.29794, 0.275753, 0.242472, 0.22187, 0.191759, 0.171157, 0.158479, 0.141046, 0.125198, 0.120444, 0.110935, 0.0982567, 0.0792393, 0.0586371, 0.0570523, 0.0538827, 0.0459588, 0.0332805, 0.0269414, 0.0174326, 0.0110935}, 
00357       {1, 1, 1, 1, 1, 1, 0.998436, 0.997654, 0.992963, 0.982017, 0.960125, 0.94527, 0.906177, 0.845192, 0.820954, 0.744332, 0.671618, 0.624707, 0.538702, 0.475371, 0.441751, 0.36982, 0.333855, 0.291634, 0.250977, 0.22674, 0.199375, 0.1681, 0.150899, 0.137608, 0.110242, 0.0992963, 0.0820954, 0.0664582, 0.0578577, 0.0453479, 0.0359656, 0.0289289, 0.0187647, 0.00938233},
00358       {1, 1, 1, 1, 0.989177, 0.941558, 0.887446, 0.839827, 0.75974, 0.612554, 0.525974, 0.478355, 0.426407, 0.361472, 0.350649, 0.279221, 0.253247, 0.24026, 0.168831, 0.145022, 0.134199, 0.108225, 0.101732, 0.0779221, 0.0606061, 0.0562771, 0.0497835, 0.04329, 0.0411255, 0.034632, 0.034632, 0.0238095, 0.0194805, 0.017316, 0.017316, 0.0108225, 0.0108225, 0.0108225, 0.00649351, 0.00649351},
00359       {1, 0.99926, 0.99926, 0.99926, 0.99852, 0.995312, 0.995312, 0.984949, 0.984703, 0.925241, 0.915865, 0.915865, 0.798668, 0.630891, 0.630891, 0.484826, 0.484579, 0.455712, 0.356279, 0.356279, 0.268937, 0.268937, 0.196891, 0.191463, 0.154453, 0.149519, 0.146558, 0.0957316, 0.0949914, 0.0885764, 0.0880829, 0.0745127, 0.0478658, 0.0471256, 0.0446583, 0.0264002, 0.0261535, 0.0157908, 0.0152973, 0.00986923}
00360     }
00361   };
00362 
00363   // now assign
00364   for (int i1 = 0; i1 < maxMUe; i1++) { 
00365     eGridMU[i1] = _eGridMU[i1];
00366     for (int i2 = 0; i2 < maxMUeta; i2++) {
00367       for (int i3 = 0; i3 < maxMUbin; i3++) {
00368         
00369         responseMU[i1][i2][i3] = _responseMU[i1][i2][i3];
00370 
00371         if(debug) {
00372           //cout.width(6);
00373           LogDebug("FastCalorimetry") << " responseMU " << i1 << " " << i2 << " " << i3  << " = " 
00374                                       << responseMU[i1][i2][i3] << std::endl;
00375         }
00376         
00377       }
00378     }
00379   }
00380   for (int i2 = 0; i2 < maxMUeta; i2++) {
00381     etaGridMU[i2] = _etaGridMU[i2];
00382   }
00383 
00384 
00385   // Normalize the response and sigmas to the corresponding energies
00386   for(int i = 0; i<maxHDe;  i++) {
00387     eGridHD[i] = _eGridHD[i];
00388     for(int j = 0; j<maxHDeta; j++) {
00389  
00390       double factor = 1.;
00391       if( j < 14) factor = 0.94;     
00392  
00393       meanHD[i][j]        =  factor * _meanHD[i][j]  / eGridHD[i];
00394       sigmaHD[i][j]       =  _sigmaHD[i][j] / eGridHD[i];
00395 
00396       meanHD_mip[i][j]    =  factor * _meanHD_mip[i][j]  / eGridHD[i];
00397       sigmaHD_mip[i][j]   =  _sigmaHD_mip[i][j] / eGridHD[i];
00398 
00399       meanHD_nomip[i][j]  =  factor * _meanHD_nomip[i][j]  / eGridHD[i];
00400       sigmaHD_nomip[i][j] =  _sigmaHD_nomip[i][j] / eGridHD[i];
00401 
00402     }
00403   }
00404 
00405 
00406   for(int i = 0; i<maxEMe;  i++) {
00407     eGridEM[i] = _eGridEM[i];
00408     for(int j = 0; j<maxEMeta; j++) {
00409       meanEM[i][j]  = 0.7 *  _meanEM[i][j] / eGridEM[i];
00410       sigmaEM[i][j] = 0.7 * _sigmaEM[i][j] / eGridEM[i];
00411     }
00412   }
00413 
00414 
00415 }
00416 
00417  
00418 std::pair<double,double> 
00419 HCALResponse::responseHCAL(int mip, double energy, double eta, int partype)
00420 {
00421 
00422   int ieta = abs((int)(eta / etaStep)) ;
00423   int ie = -1;
00424 
00425   mean  = 0.;
00426   sigma = 0.;
00427 
00428   // e/gamma
00429   if(partype == 0) {
00430     ieta -= 30;  // HF starts at ieta=30 till ieta=51 
00431                  // but resp.vector from index=0 through 20
00432     if(ieta >= maxEMeta ) ieta = maxEMeta;
00433     else if(ieta < 0) ieta = 0;
00434  
00435     for (int i = 0; i < maxEMe; i++) {
00436       if(energy < eGridEM[i])  {
00437         if(i == 0) ie = 0;       
00438         else  ie = i-1;
00439         break;
00440       }
00441     }
00442     if(ie == -1) ie = maxEMe - 2;  
00443     interEM(energy, ie, ieta);
00444   }  
00445      
00446   else { 
00447     // hadrons
00448     if(partype == 1) {  
00449       
00450       if(ieta >= maxHDeta) ieta = maxHDeta;
00451       
00452       if(ieta < 0 ) ieta = 0;
00453       for (int i = 0; i < maxHDe; i++) {
00454         if(energy < eGridHD[i])  {
00455           if(i == 0) ie = 0;     // less than minimal -
00456           else  ie = i-1;        // back extrapolation with the 1st interval
00457             break;
00458         }       
00459       }
00460       if(ie == -1) ie = maxHDe - 2;     // more than maximum - 
00461       interHD(mip, energy, ie, ieta);        // extrapolation with last interv.
00462       
00463     }
00464 
00465     
00466     // finally apply energy scale correction
00467     mean  *= eResponseCorrection;
00468     mean  += eBias;
00469     sigma *= eResponseCorrection;      
00470     
00471 
00472   }
00473   
00474   // muons
00475   if(partype == 2) { 
00476     
00477     ieta = maxMUeta;
00478     for(int i = 0; i < maxMUeta; i++) {
00479       if(fabs(eta) < etaGridMU[i]) {
00480         ieta = i;  
00481         break;
00482       }       
00483     }     
00484     
00485     if(ieta < 0) ieta = 0;
00486     if(ieta < maxMUeta) {  // HB-HE
00487       
00488       for (int i = 0; i < maxMUe; i++) {
00489         if(energy < eGridMU[i])  {
00490           if(i == 0) ie = 0;     // less than minimal -
00491           else  ie = i-1;        // back extrapolation with the first interval
00492           break;
00493         }
00494         
00495         if(ie == -1) ie = maxMUe - 2;     // more than maximum - 
00496         interMU(energy, ie, ieta);         // extrapolation using the last interv
00497         if(mean > energy) mean = energy;  
00498         
00499       }
00500     }
00501   }
00502   
00503   // debugging
00504   if(debug) {
00505     //  cout.width(6);
00506     LogDebug("FastCalorimetry") << std::endl
00507                                 << " HCALResponse::responseHCAL, partype = " <<  partype 
00508                                 << " E, eta = " << energy << " " << eta  
00509                                 << "  mean & sigma = " << mean   << " " << sigma << std::endl;
00510   }
00511 
00512   return std::pair<double,double>(mean,sigma);
00513 
00514 }
00515 
00516 void HCALResponse::interMU(double e, int ie, int ieta)
00517 {
00518 
00519   double x = random->flatShoot();
00520 
00521   int bin1 = maxMUbin;
00522   for(int i = 0; i < maxMUbin; i++) {
00523     if(x > responseMU[ie][ieta][i]) {
00524       bin1 = i-1;
00525       break;
00526     }
00527   }
00528   int bin2 = maxMUbin;
00529   for(int i = 0; i < maxMUbin; i++) {
00530     if(x > responseMU[ie+1][ieta][i]) {
00531       bin2 = i-1;
00532       break;
00533     }
00534   }
00535    
00536   double x1 = eGridMU[ie];
00537   double x2 = eGridMU[ie+1];
00538   double y1 = (bin1 + random->flatShoot()) * muStep;   
00539   double y2 = (bin2 + random->flatShoot()) * muStep;   
00540 
00541   if(debug) {
00542     //  cout.width(6);
00543     LogDebug("FastCalorimetry") << std::endl
00544                                 << " HCALResponse::interMU  " << std::endl
00545                                 << " x, x1-x2, y1-y2 = " 
00546                                 << e << ", " << x1 <<"-" << x2 << " " << y1 <<"-" << y2 << std::endl; 
00547   
00548   }
00549 
00550 
00551   mean  = y1 + (y2-y1) * (e - x1)/(x2 - x1);
00552   sigma = 0.;
00553 
00554   if(debug) {
00555     //cout.width(6);
00556     LogDebug("FastCalorimetry") << std::endl
00557                                 << " HCALResponse::interMU " << std::endl
00558                                 << " e, ie, ieta = " << e << " " << ie << " " << ieta << std::endl
00559                                 << " response  = " << mean << std::endl; 
00560   }
00561 
00562 }
00563 
00564 void HCALResponse::interHD(int mip, double e, int ie, int ieta)
00565 {
00566 
00567   double y1, y2;
00568 
00569   double x1 = eGridHD[ie];
00570   double x2 = eGridHD[ie+1];
00571 
00572   if(mip == 2) {           // mip doesn't matter
00573     y1 = meanHD[ie][ieta]; 
00574     y2 = meanHD[ie+1][ieta]; 
00575   }
00576   else {
00577     if(mip == 0) {         // not mip
00578       y1 = meanHD_nomip[ie][ieta]; 
00579       y2 = meanHD_nomip[ie+1][ieta]; 
00580     }
00581     else {                 // mip in ECAL
00582       y1 = meanHD_mip[ie][ieta]; 
00583       y2 = meanHD_mip[ie+1][ieta]; 
00584     }
00585   }
00586 
00587   if(debug) {
00588     //  cout.width(6);
00589     LogDebug("FastCalorimetry") << std::endl
00590                                 << " HCALResponse::interHD mean " << std::endl
00591                                 << " x, x1-x2, y1-y2 = " 
00592                                 << e << ", " << x1 <<"-" << x2 << " "
00593                                 << y1 <<"-" << y2 << std::endl;  
00594   }
00595   
00596   mean =  e * (y1 + (y2 - y1) * (e - x1)/(x2 - x1));      
00597   
00598 
00599   if(mip == 2) {           // mip doesn't matter
00600     y1 = sigmaHD[ie][ieta]; 
00601     y2 = sigmaHD[ie+1][ieta]; 
00602   }
00603   else {
00604     if(mip == 0) {         // not mip
00605       y1 = sigmaHD_nomip[ie][ieta]; 
00606       y2 = sigmaHD_nomip[ie+1][ieta]; 
00607     }
00608     else {                 // mip in ECAL
00609       y1 = sigmaHD_mip[ie][ieta]; 
00610       y2 = sigmaHD_mip[ie+1][ieta]; 
00611     }
00612   }
00613   
00614   if(debug) {
00615     //  cout.width(6);
00616     LogDebug("FastCalorimetry") << std::endl
00617                                 << " HCALResponse::interHD sigma" << std::endl
00618                                 << " x, x1-x2, y1-y2 = " 
00619                                 << e << ", " << x1 <<"-" << x2 << " " << y1 <<"-" << y2 << std::endl; 
00620   
00621   }
00622  
00623   sigma = e * (y1 + (y2 - y1) * (e - x1)/(x2 - x1));      
00624 
00625 
00626   if(debug) {
00627     //cout.width(6);
00628     LogDebug("FastCalorimetry") << std::endl
00629                                 << " HCALResponse::interHD " << std::endl
00630                                 << " e, ie, ieta = " << e << " " << ie << " " << ieta << std::endl
00631                                 << " mean, sigma  = " << mean << " " << sigma << std::endl ;
00632   }
00633 
00634 }
00635 
00636 
00637 void HCALResponse::interEM(double e, int ie, int ieta)
00638 { 
00639   double y1 = meanEM[ie][ieta]; 
00640   double y2 = meanEM[ie+1][ieta]; 
00641   double x1 = eGridEM[ie];
00642   double x2 = eGridEM[ie+1];
00643   
00644   if(debug) {
00645     //  cout.width(6);
00646     LogDebug("FastCalorimetry") << std::endl
00647                                 << " HCALResponse::interEM mean " << std::endl
00648                                 << " x, x1-x2, y1-y2 = " 
00649                                 << e << ", " << x1 <<"-" << x2 << " " << y1 <<"-" << y2 << std::endl; 
00650   
00651   }
00652 
00653   mean =  e * (y1 + (y2 - y1) * (e - x1)/(x2 - x1));      
00654   
00655   y1 = sigmaEM[ie][ieta]; 
00656   y2 = sigmaEM[ie+1][ieta]; 
00657   
00658   if(debug) {
00659     //  cout.width(6);
00660     LogDebug("FastCalorimetry") << std::endl
00661                                 << " HCALResponse::interEM sigma" << std::endl
00662                                 << " x, x1-x2, y1-y2 = " 
00663                                 << e << ", " << x1 <<"-" << x2 << " " << y1 <<"-" << y2 << std::endl; 
00664   
00665   }
00666 
00667   sigma = e * (y1 + (y2 - y1) * (e - x1)/(x2 - x1));      
00668 }
00669 
00670 
00671 
00672 // Old parametrization for hadrons
00673 double HCALResponse::getHCALEnergyResolution(double e, int hit){
00674   
00675   if(hit==hcforward) 
00676     return e *sqrt( RespPar[VFCAL][1][0]*RespPar[VFCAL][1][0] / e + 
00677                     RespPar[VFCAL][1][1]*RespPar[VFCAL][1][1] );
00678   else
00679     return  e * sqrt( RespPar[HCAL][hit][0]*RespPar[HCAL][hit][0]/(e)
00680                       + RespPar[HCAL][hit][1]*RespPar[HCAL][hit][1]);   
00681 
00682 }
00683 
00684 // Old parameterization of the calo response to hadrons
00685 double HCALResponse::getHCALEnergyResponse(double e, int hit){
00686 
00687   double s = eResponseScale[hit];
00688   double n = eResponseExponent;
00689   double p = eResponsePlateau[hit];
00690   double c = eResponseCoefficient;
00691 
00692   double response = e * p / (1+c*exp(n * log(s/e)));
00693 
00694   if(response<0.) response = 0.;
00695 
00696   return response;
00697 }
00698 
00699 // old parameterization of the HF response to electrons
00700 double HCALResponse::getHFEnergyResolution(double EGen)
00701 {
00702   return EGen *sqrt( RespPar[VFCAL][0][0]*RespPar[VFCAL][0][0] / EGen + 
00703                      RespPar[VFCAL][0][1]*RespPar[VFCAL][0][1] );
00704 }  
00705 
00706 
00707 #ifdef IJKLMMNOP // This stuff was moved to Calorimetry.cfi
00708 // default values for old prameterizations
00709 const double HCALResponse::RespByDefault[3][2][3] = {
00710   //Numbers taken from Calorimetry TDR's.
00711   //ECAL - dummy, the numbers are in  FASTEnergyReconstructor.cc
00712   //Stochastic Constant Noise 
00713   {{3*0.},   //barrel
00714    {3*0.}}, //endcap
00715   //HCAL
00716   {{1.22,       0.05,       0},    //barrel
00717    {1.30,       0.05,       0}},   //endcap (R. Harris - 17-oct-2004)
00718   //VFCAL
00719   {{1.82,       0.09,    0},  //hadrons
00720    {1.38,       0.05,    0}}  //electrons & photons
00721 };
00722 #endif

Generated on Tue Jun 9 17:35:03 2009 for CMSSW by  doxygen 1.5.4