File indexing completed on 2024-04-06 12:23:29
0001 #include "PhysicsTools/Heppy/interface/RochCor.h"
0002 #include <TLorentzVector.h>
0003
0004 namespace heppy {
0005
0006
0007 const double RochCor::pi = 3.14159265358979323846;
0008 const float RochCor::genm_smr =
0009 9.09956e+01;
0010 const float RochCor::genm = 91.06;
0011
0012 const float RochCor::recmA = 9.10062e+01;
0013 const float RochCor::drecmA = 9.09285e+01;
0014 const float RochCor::mgsclA_stat = 0.0001;
0015 const float RochCor::mgsclA_syst = 0.0006;
0016 const float RochCor::dgsclA_stat = 0.0001;
0017 const float RochCor::dgsclA_syst = 0.0008;
0018 const float RochCor::recmB = 9.10210e+01;
0019 const float RochCor::drecmB = 9.09469e+01;
0020 const float RochCor::mgsclB_stat = 0.0001;
0021 const float RochCor::mgsclB_syst = 0.0006;
0022 const float RochCor::dgsclB_stat = 0.0001;
0023 const float RochCor::dgsclB_syst = 0.0008;
0024
0025
0026 const float RochCor::deltaA = -2.85242e-06;
0027 const float RochCor::deltaA_stat = 7.74389e-07;
0028 const float RochCor::deltaA_syst = 6.992e-07;
0029
0030 const float RochCor::sfA = 44.6463;
0031 const float RochCor::sfA_stat = 1.92224;
0032 const float RochCor::sfA_syst = 9.29;
0033
0034 const float RochCor::deltaB = -5.68463e-06;
0035 const float RochCor::deltaB_stat = 8.21406e-07;
0036 const float RochCor::deltaB_syst = 1.4268e-06;
0037
0038 const float RochCor::sfB = 23.8652;
0039 const float RochCor::sfB_stat = 0.941748;
0040 const float RochCor::sfB_syst = 4.86;
0041
0042 const float RochCor::apar = 1.0;
0043 const float RochCor::bpar = -5.03313e-06;
0044 const float RochCor::cpar = -4.41463e-05;
0045 const float RochCor::d0par = -0.000148871;
0046 const float RochCor::e0par = 1.59501;
0047 const float RochCor::d1par = 7.95495e-05;
0048 const float RochCor::e1par = -0.364823;
0049 const float RochCor::d2par = 0.000152032;
0050 const float RochCor::e2par = 0.410195;
0051
0052
0053 const float RochCor::netabin[9] = {-2.4, -2.1, -1.4, -0.7, 0.0, 0.7, 1.4, 2.1, 2.4};
0054
0055 const float RochCor::dcor_bfA[8][8] = {
0056 {-0.000102967, -0.000025046, -0.000000182, -0.000031720, -0.000004638, -0.000013151, -0.000073829, -0.000021362},
0057 {0.000075011, 0.000054312, 0.000003541, -0.000016074, -0.000013214, 0.000000586, 0.000025095, 0.000117588},
0058 {0.000147495, -0.000029203, 0.000016442, 0.000008401, -0.000014585, 0.000004246, 0.000027783, 0.000023445},
0059 {-0.000063689, -0.000021704, 0.000006406, -0.000059618, -0.000025848, -0.000024249, -0.000044822, -0.000021290},
0060 {-0.000000765, 0.000011984, 0.000027719, 0.000025866, 0.000017671, -0.000065838, -0.000047034, 0.000044730},
0061 {0.000011344, -0.000132266, -0.000038679, 0.000015218, -0.000007268, -0.000022690, -0.000079248, -0.000052198},
0062 {-0.000107277, -0.000092664, -0.000016977, -0.000022288, -0.000005622, -0.000042913, -0.000066225, -0.000058114},
0063 {-0.000057816, -0.000107028, -0.000025582, 0.000002045, -0.000035959, -0.000007281, -0.000059810, -0.000047769}};
0064
0065 const float RochCor::dcor_maA[8][8] = {
0066 {0.000769889, 0.000176340, -0.000173462, -0.000159710, -0.000081615, -0.000058009, 0.000366711, 0.001477802},
0067 {0.001278711, 0.000294977, -0.000105670, -0.000077729, -0.000068954, -0.000007808, 0.000181101, 0.000482557},
0068 {0.000277706, 0.000140310, 0.000031660, 0.000120208, 0.000074286, 0.000078156, 0.000123767, 0.000422373},
0069 {-0.001571163, -0.000346042, 0.000085722, 0.000125968, 0.000133283, 0.000116788, 0.000019394, 0.000149867},
0070 {-0.002099394, -0.000445580, 0.000033833, 0.000043528, 0.000148554, 0.000263179, 0.000115391, -0.000513180},
0071 {-0.001494752, -0.000433278, -0.000092362, -0.000026281, -0.000000523, 0.000048183, 0.000051742, -0.000317282},
0072 {-0.000013164, -0.000104072, -0.000063807, -0.000056538, -0.000067794, -0.000125772, -0.000013945, 0.001270347},
0073 {0.000130353, 0.000002891, -0.000136974, -0.000116878, -0.000190943, -0.000198251, 0.000126934, 0.001696517}};
0074
0075 const float RochCor::mcor_bfA[8][8] = {
0076 {-0.000063713, -0.000029352, -0.000000867, 0.000032270, 0.000015492, 0.000008083, -0.000069408, -0.000091716},
0077 {-0.000060494, -0.000002986, 0.000012797, -0.000031184, -0.000031340, -0.000006048, 0.000013469, -0.000020202},
0078 {-0.000022997, -0.000043807, -0.000007016, -0.000030670, -0.000020740, -0.000016735, -0.000007218, -0.000065682},
0079 {-0.000041813, -0.000042280, 0.000013533, -0.000002547, -0.000017769, -0.000011282, -0.000022693, -0.000099361},
0080 {-0.000031962, -0.000022918, 0.000009196, 0.000027077, 0.000002257, -0.000016681, -0.000017862, -0.000056932},
0081 {-0.000026284, -0.000053526, -0.000000128, 0.000026427, 0.000034433, -0.000004638, -0.000023034, -0.000069140},
0082 {-0.000109084, -0.000073483, -0.000007053, 0.000037945, 0.000037618, -0.000016044, -0.000053256, -0.000045541},
0083 {-0.000063455, -0.000018084, -0.000009968, -0.000004891, -0.000018822, 0.000001771, -0.000021826, -0.000079626}};
0084
0085 const float RochCor::mcor_maA[8][8] = {
0086 {0.000950726, 0.000132997, -0.000166230, -0.000178984, -0.000175606, -0.000184543, 0.000028977, 0.000145090},
0087 {0.001082393, 0.000012119, -0.000105033, -0.000095558, -0.000087842, -0.000050033, 0.000203732, 0.000781017},
0088 {0.000522823, -0.000027809, 0.000020088, 0.000027120, 0.000029425, 0.000063659, 0.000059290, 0.000007311},
0089 {0.000659471, 0.000426387, 0.000184802, 0.000127485, 0.000153550, 0.000143188, 0.000325332, 0.000307829},
0090 {0.000842162, 0.000490264, 0.000212897, 0.000147332, 0.000174670, 0.000153595, 0.000327076, 0.001000893},
0091 {-0.001242714, -0.000155280, 0.000101135, 0.000094522, 0.000093880, 0.000066729, 0.000141144, 0.000810823},
0092 {-0.001757072, -0.000320008, -0.000029266, -0.000022502, -0.000040205, -0.000056041, -0.000149048, -0.000221401},
0093 {0.000408788, 0.000114598, -0.000141981, -0.000110819, -0.000115938, -0.000138071, -0.000784406, -0.002160131}};
0094
0095 const float RochCor::dcor_bfAer[8][8] = {
0096 {0.000069681, 0.000035377, 0.000030160, 0.000028300, 0.000028481, 0.000030308, 0.000035908, 0.000066403},
0097 {0.000063562, 0.000035195, 0.000029976, 0.000028288, 0.000028251, 0.000030304, 0.000035175, 0.000063468},
0098 {0.000066084, 0.000036266, 0.000030191, 0.000028046, 0.000028118, 0.000029895, 0.000035353, 0.000063882},
0099 {0.000064693, 0.000035627, 0.000029777, 0.000028668, 0.000028323, 0.000030154, 0.000034876, 0.000063622},
0100 {0.000065655, 0.000035484, 0.000030380, 0.000028062, 0.000028263, 0.000030324, 0.000035823, 0.000068903},
0101 {0.000062857, 0.000034907, 0.000029606, 0.000028968, 0.000028557, 0.000029858, 0.000034830, 0.000063717},
0102 {0.000066211, 0.000035707, 0.000029803, 0.000028436, 0.000028707, 0.000029851, 0.000035014, 0.000064730},
0103 {0.000065003, 0.000035761, 0.000030160, 0.000028192, 0.000028342, 0.000029811, 0.000035545, 0.000063645}};
0104
0105 const float RochCor::dcor_maAer[8][8] = {
0106 {0.000069681, 0.000035377, 0.000030160, 0.000028300, 0.000028481, 0.000030308, 0.000035908, 0.000066403},
0107 {0.000063562, 0.000035195, 0.000029976, 0.000028288, 0.000028251, 0.000030304, 0.000035175, 0.000063468},
0108 {0.000066084, 0.000036266, 0.000030191, 0.000028046, 0.000028118, 0.000029895, 0.000035353, 0.000063882},
0109 {0.000064693, 0.000035627, 0.000029777, 0.000028668, 0.000028323, 0.000030154, 0.000034876, 0.000063622},
0110 {0.000065655, 0.000035484, 0.000030380, 0.000028062, 0.000028263, 0.000030324, 0.000035823, 0.000068903},
0111 {0.000062857, 0.000034907, 0.000029606, 0.000028968, 0.000028557, 0.000029858, 0.000034830, 0.000063717},
0112 {0.000066211, 0.000035707, 0.000029803, 0.000028436, 0.000028707, 0.000029851, 0.000035014, 0.000064730},
0113 {0.000065003, 0.000035761, 0.000030160, 0.000028192, 0.000028342, 0.000029811, 0.000035545, 0.000063645}};
0114
0115 const float RochCor::mcor_bfAer[8][8] = {
0116 {0.000028957, 0.000015643, 0.000013419, 0.000012634, 0.000012700, 0.000013592, 0.000016042, 0.000028597},
0117 {0.000027958, 0.000015560, 0.000013545, 0.000012820, 0.000012798, 0.000013524, 0.000015725, 0.000027844},
0118 {0.000027910, 0.000015737, 0.000013522, 0.000012785, 0.000012761, 0.000013554, 0.000015626, 0.000027776},
0119 {0.000028081, 0.000015884, 0.000013473, 0.000012691, 0.000012659, 0.000013430, 0.000015598, 0.000027889},
0120 {0.000027971, 0.000015665, 0.000013466, 0.000012651, 0.000012648, 0.000013558, 0.000016132, 0.000029045},
0121 {0.000027824, 0.000015624, 0.000013452, 0.000012922, 0.000012881, 0.000013473, 0.000015628, 0.000027859},
0122 {0.000028053, 0.000015657, 0.000013501, 0.000012726, 0.000012889, 0.000013432, 0.000015494, 0.000027716},
0123 {0.000028212, 0.000015901, 0.000013511, 0.000012648, 0.000012674, 0.000013507, 0.000015666, 0.000027969}};
0124
0125 const float RochCor::mcor_maAer[8][8] = {
0126 {0.000028957, 0.000015643, 0.000013419, 0.000012634, 0.000012700, 0.000013592, 0.000016042, 0.000028597},
0127 {0.000027958, 0.000015560, 0.000013545, 0.000012820, 0.000012798, 0.000013524, 0.000015725, 0.000027844},
0128 {0.000027910, 0.000015737, 0.000013522, 0.000012785, 0.000012761, 0.000013554, 0.000015626, 0.000027776},
0129 {0.000028081, 0.000015884, 0.000013473, 0.000012691, 0.000012659, 0.000013430, 0.000015598, 0.000027889},
0130 {0.000027971, 0.000015665, 0.000013466, 0.000012651, 0.000012648, 0.000013558, 0.000016132, 0.000029045},
0131 {0.000027824, 0.000015624, 0.000013452, 0.000012922, 0.000012881, 0.000013473, 0.000015628, 0.000027859},
0132 {0.000028053, 0.000015657, 0.000013501, 0.000012726, 0.000012889, 0.000013432, 0.000015494, 0.000027716},
0133 {0.000028212, 0.000015901, 0.000013511, 0.000012648, 0.000012674, 0.000013507, 0.000015666, 0.000027969}};
0134
0135
0136
0137 const float RochCor::dmavgA[8][8] = {
0138 {0.025922541, 0.025094489, 0.025024760, 0.025459164, 0.025507064, 0.024926673, 0.025264207, 0.026154362},
0139 {0.025771485, 0.025052688, 0.025031280, 0.025448624, 0.025418813, 0.024947593, 0.025213752, 0.025711461},
0140 {0.025992243, 0.025246736, 0.025081158, 0.025465835, 0.025396615, 0.025090199, 0.025225184, 0.025674825},
0141 {0.026065594, 0.025210021, 0.024985654, 0.025468545, 0.025506958, 0.025011636, 0.025137782, 0.025900352},
0142 {0.025723593, 0.025225323, 0.025057659, 0.025327039, 0.025445884, 0.025039377, 0.025250011, 0.025920693},
0143 {0.025890951, 0.025184183, 0.025108732, 0.025431830, 0.025389774, 0.025015759, 0.025133115, 0.025839978},
0144 {0.025969359, 0.025120514, 0.025090360, 0.025397708, 0.025439110, 0.024991973, 0.025145588, 0.025956176},
0145 {0.025890127, 0.025152920, 0.025013377, 0.025419729, 0.025451053, 0.025052175, 0.025151170, 0.025819692}};
0146
0147 const float RochCor::dpavgA[8][8] = {
0148 {0.025916064, 0.025307681, 0.024921634, 0.025494383, 0.025417695, 0.025041578, 0.025211546, 0.026138035},
0149 {0.025661559, 0.025125726, 0.024917529, 0.025545957, 0.025489507, 0.024993156, 0.025232820, 0.025819186},
0150 {0.025977549, 0.025185495, 0.024993264, 0.025475434, 0.025447391, 0.025060103, 0.025212464, 0.025954195},
0151 {0.026050003, 0.025305680, 0.024998627, 0.025457135, 0.025432215, 0.025014203, 0.025160101, 0.025892301},
0152 {0.026134513, 0.025227871, 0.024904078, 0.025474157, 0.025492296, 0.025053230, 0.025237275, 0.025852681},
0153 {0.026070419, 0.025241236, 0.025032270, 0.025465782, 0.025477130, 0.025089989, 0.025266698, 0.025788486},
0154 {0.025893934, 0.025278195, 0.025005032, 0.025417408, 0.025462482, 0.025002584, 0.025334630, 0.025973266},
0155 {0.025995267, 0.025325988, 0.024916915, 0.025384798, 0.025394341, 0.025024826, 0.025278556, 0.025963080}};
0156
0157 const float RochCor::mmavgA[8][8] = {
0158 {0.025859084, 0.025171574, 0.025031055, 0.025414657, 0.025421970, 0.025005626, 0.025202085, 0.025905427},
0159 {0.025820029, 0.025133587, 0.025017091, 0.025474822, 0.025465318, 0.025012641, 0.025166745, 0.025890426},
0160 {0.025843527, 0.025164085, 0.025038476, 0.025478059, 0.025477999, 0.025038661, 0.025147011, 0.025803665},
0161 {0.025876173, 0.025204137, 0.025021527, 0.025462181, 0.025430126, 0.025017812, 0.025204524, 0.025839771},
0162 {0.025861181, 0.025205469, 0.025018335, 0.025426248, 0.025460153, 0.025022144, 0.025196286, 0.025888667},
0163 {0.025758405, 0.025144612, 0.025037865, 0.025474080, 0.025474752, 0.025036212, 0.025167523, 0.025862979},
0164 {0.025807403, 0.025158727, 0.025014627, 0.025464075, 0.025472244, 0.025021210, 0.025130780, 0.025783651},
0165 {0.025905758, 0.025201579, 0.025009920, 0.025423990, 0.025416973, 0.025032037, 0.025147863, 0.025760345}};
0166
0167 const float RochCor::mpavgA[8][8] = {
0168 {0.025888818, 0.025206935, 0.025026146, 0.025442136, 0.025470197, 0.025027800, 0.025243407, 0.025952872},
0169 {0.025923013, 0.025178692, 0.025011691, 0.025498907, 0.025477111, 0.025023833, 0.025166403, 0.025886905},
0170 {0.025943006, 0.025225756, 0.025007080, 0.025476595, 0.025488864, 0.025026658, 0.025179579, 0.025889859},
0171 {0.025949377, 0.025208820, 0.025021340, 0.025454777, 0.025444410, 0.024996581, 0.025195810, 0.025967101},
0172 {0.025950823, 0.025197201, 0.024994630, 0.025441154, 0.025458403, 0.025024723, 0.025211150, 0.025938079},
0173 {0.025939334, 0.025189405, 0.025023127, 0.025486532, 0.025474880, 0.025007298, 0.025220661, 0.025942054},
0174 {0.025997086, 0.025189140, 0.025022336, 0.025471484, 0.025493603, 0.025012869, 0.025188219, 0.025964187},
0175 {0.025944809, 0.025237280, 0.025027926, 0.025469723, 0.025445395, 0.025024964, 0.025234456, 0.026013442}};
0176
0177
0178
0179 const float RochCor::dcor_bfB[8][8] = {
0180 {-0.000121996, -0.000051596, -0.000011541, -0.000024676, -0.000058614, 0.000004092, -0.000042827, -0.000040838},
0181 {-0.000082378, -0.000066345, -0.000047373, -0.000017058, -0.000021958, -0.000029804, -0.000053044, -0.000014822},
0182 {0.000012351, -0.000031871, -0.000017504, -0.000017341, -0.000018939, -0.000036424, -0.000023220, -0.000006308},
0183 {0.000019524, -0.000027703, -0.000010703, -0.000002277, -0.000061078, -0.000063380, -0.000063290, -0.000021621},
0184 {-0.000052157, -0.000054030, -0.000039215, -0.000047173, -0.000021800, -0.000008816, -0.000041229, -0.000075721},
0185 {-0.000059315, -0.000081392, -0.000015056, 0.000009267, 0.000015595, -0.000038434, -0.000008257, -0.000000816},
0186 {-0.000011477, -0.000061045, -0.000023999, 0.000018858, 0.000002374, 0.000010510, -0.000017883, 0.000022914},
0187 {-0.000070644, -0.000061816, -0.000037444, -0.000036912, 0.000013680, -0.000003858, -0.000005998, -0.000005702}};
0188
0189 const float RochCor::dcor_maB[8][8] = {
0190 {0.000648425, 0.000184921, -0.000159733, -0.000209004, -0.000158411, -0.000118417, 0.000343531, 0.001274013},
0191 {0.001107062, 0.000215835, -0.000074671, -0.000078597, -0.000068598, -0.000038450, 0.000119307, 0.000441764},
0192 {0.000299114, 0.000047329, 0.000028768, 0.000041104, 0.000068554, 0.000057753, 0.000062958, 0.000434265},
0193 {-0.001531225, -0.000369769, 0.000034113, 0.000106520, 0.000164404, 0.000166858, 0.000026463, 0.000183539},
0194 {-0.001931603, -0.000423243, 0.000014606, 0.000077337, 0.000176900, 0.000297178, 0.000124199, -0.000358460},
0195 {-0.001242424, -0.000306289, -0.000036347, 0.000069690, 0.000008892, 0.000084983, 0.000127487, -0.000191898},
0196 {0.000001016, -0.000111617, -0.000068977, -0.000044695, -0.000085620, -0.000113063, 0.000016393, 0.001409055},
0197 {0.000351159, 0.000019529, -0.000157996, -0.000187339, -0.000146448, -0.000186771, 0.000173020, 0.001701876}};
0198
0199 const float RochCor::mcor_bfB[8][8] = {
0200 {-0.000072402, -0.000058879, 0.000003018, 0.000018626, 0.000007212, -0.000005316, -0.000095954, -0.000125599},
0201 {-0.000061846, -0.000003202, 0.000014083, -0.000033514, -0.000039273, 0.000004540, 0.000009430, -0.000017489},
0202 {-0.000031382, -0.000047138, -0.000019203, -0.000024139, -0.000038678, -0.000040859, 0.000012155, -0.000065070},
0203 {-0.000056882, -0.000031030, 0.000024829, 0.000013713, -0.000010394, -0.000020459, -0.000045276, -0.000057322},
0204 {-0.000043675, 0.000008459, 0.000015752, 0.000013816, -0.000008688, -0.000031616, -0.000032060, -0.000053715},
0205 {0.000000487, -0.000064518, 0.000019284, 0.000045588, 0.000028956, -0.000002070, -0.000029702, -0.000080368},
0206 {-0.000108752, -0.000075013, -0.000016411, 0.000050559, 0.000042682, -0.000014198, -0.000064707, -0.000072518},
0207 {-0.000039973, -0.000016213, 0.000000336, 0.000004890, -0.000014730, -0.000011327, -0.000006556, -0.000088452}};
0208
0209 const float RochCor::mcor_maB[8][8] = {
0210 {0.000974618, 0.000128823, -0.000152265, -0.000186697, -0.000167048, -0.000204591, 0.000008788, 0.000152219},
0211 {0.001104959, 0.000007490, -0.000113518, -0.000115239, -0.000087118, -0.000054860, 0.000210312, 0.000761740},
0212 {0.000495175, -0.000021281, 0.000019935, 0.000025729, 0.000026502, 0.000058051, 0.000080846, 0.000040006},
0213 {0.000679721, 0.000425605, 0.000190407, 0.000121199, 0.000160504, 0.000146688, 0.000321539, 0.000309533},
0214 {0.000862263, 0.000497438, 0.000205395, 0.000146674, 0.000179833, 0.000151782, 0.000320139, 0.000994401},
0215 {-0.001264907, -0.000156277, 0.000113008, 0.000094040, 0.000099709, 0.000062566, 0.000128300, 0.000821240},
0216 {-0.001737087, -0.000315566, -0.000028978, -0.000021989, -0.000026353, -0.000042322, -0.000148004, -0.000245085},
0217 {0.000404257, 0.000109031, -0.000120937, -0.000124930, -0.000110856, -0.000152148, -0.000770993, -0.002169186}};
0218
0219 const float RochCor::dcor_bfBer[8][8] = {
0220 {0.000073392, 0.000037888, 0.000030941, 0.000028542, 0.000028942, 0.000031034, 0.000038166, 0.000071498},
0221 {0.000067919, 0.000036855, 0.000030957, 0.000028460, 0.000028904, 0.000030892, 0.000036525, 0.000067771},
0222 {0.000069890, 0.000037252, 0.000030693, 0.000028233, 0.000028295, 0.000030924, 0.000036761, 0.000067732},
0223 {0.000068865, 0.000037515, 0.000030440, 0.000028521, 0.000028758, 0.000031061, 0.000036545, 0.000067957},
0224 {0.000070287, 0.000038039, 0.000031099, 0.000028541, 0.000028535, 0.000030889, 0.000038192, 0.000073368},
0225 {0.000070529, 0.000036023, 0.000030708, 0.000029111, 0.000029156, 0.000030485, 0.000037271, 0.000069426},
0226 {0.000068987, 0.000036834, 0.000030454, 0.000028355, 0.000028894, 0.000030568, 0.000036321, 0.000069434},
0227 {0.000069238, 0.000037352, 0.000030916, 0.000028682, 0.000028282, 0.000030943, 0.000037054, 0.000068690}};
0228
0229 const float RochCor::dcor_maBer[8][8] = {
0230 {0.000073392, 0.000037888, 0.000030941, 0.000028542, 0.000028942, 0.000031034, 0.000038166, 0.000071498},
0231 {0.000067919, 0.000036855, 0.000030957, 0.000028460, 0.000028904, 0.000030892, 0.000036525, 0.000067771},
0232 {0.000069890, 0.000037252, 0.000030693, 0.000028233, 0.000028295, 0.000030924, 0.000036761, 0.000067732},
0233 {0.000068865, 0.000037515, 0.000030440, 0.000028521, 0.000028758, 0.000031061, 0.000036545, 0.000067957},
0234 {0.000070287, 0.000038039, 0.000031099, 0.000028541, 0.000028535, 0.000030889, 0.000038192, 0.000073368},
0235 {0.000070529, 0.000036023, 0.000030708, 0.000029111, 0.000029156, 0.000030485, 0.000037271, 0.000069426},
0236 {0.000068987, 0.000036834, 0.000030454, 0.000028355, 0.000028894, 0.000030568, 0.000036321, 0.000069434},
0237 {0.000069238, 0.000037352, 0.000030916, 0.000028682, 0.000028282, 0.000030943, 0.000037054, 0.000068690}};
0238
0239 const float RochCor::mcor_bfBer[8][8] = {
0240 {0.000031813, 0.000016534, 0.000013999, 0.000013046, 0.000013123, 0.000014245, 0.000016964, 0.000031719},
0241 {0.000030718, 0.000016483, 0.000014127, 0.000013244, 0.000013198, 0.000014151, 0.000016711, 0.000030863},
0242 {0.000030665, 0.000016682, 0.000014126, 0.000013207, 0.000013188, 0.000014194, 0.000016551, 0.000030725},
0243 {0.000030997, 0.000016830, 0.000014015, 0.000013110, 0.000013070, 0.000014090, 0.000016538, 0.000030930},
0244 {0.000030883, 0.000016557, 0.000014048, 0.000013105, 0.000013067, 0.000014169, 0.000017090, 0.000032174},
0245 {0.000030553, 0.000016523, 0.000014045, 0.000013333, 0.000013320, 0.000014083, 0.000016591, 0.000030854},
0246 {0.000030886, 0.000016615, 0.000014077, 0.000013136, 0.000013316, 0.000014054, 0.000016452, 0.000030541},
0247 {0.000031052, 0.000016845, 0.000014093, 0.000013053, 0.000013071, 0.000014144, 0.000016638, 0.000031061}};
0248
0249 const float RochCor::mcor_maBer[8][8] = {
0250 {0.000031813, 0.000016534, 0.000013999, 0.000013046, 0.000013123, 0.000014245, 0.000016964, 0.000031719},
0251 {0.000030718, 0.000016483, 0.000014127, 0.000013244, 0.000013198, 0.000014151, 0.000016711, 0.000030863},
0252 {0.000030665, 0.000016682, 0.000014126, 0.000013207, 0.000013188, 0.000014194, 0.000016551, 0.000030725},
0253 {0.000030997, 0.000016830, 0.000014015, 0.000013110, 0.000013070, 0.000014090, 0.000016538, 0.000030930},
0254 {0.000030883, 0.000016557, 0.000014048, 0.000013105, 0.000013067, 0.000014169, 0.000017090, 0.000032174},
0255 {0.000030553, 0.000016523, 0.000014045, 0.000013333, 0.000013320, 0.000014083, 0.000016591, 0.000030854},
0256 {0.000030886, 0.000016615, 0.000014077, 0.000013136, 0.000013316, 0.000014054, 0.000016452, 0.000030541},
0257 {0.000031052, 0.000016845, 0.000014093, 0.000013053, 0.000013071, 0.000014144, 0.000016638, 0.000031061}};
0258
0259
0260
0261 const float RochCor::dmavgB[8][8] = {
0262 {0.025938774, 0.025266827, 0.025022293, 0.025374338, 0.025372916, 0.025005996, 0.025240074, 0.026067392},
0263 {0.025894727, 0.025191097, 0.025013219, 0.025419539, 0.025390481, 0.025019205, 0.025198246, 0.025935809},
0264 {0.025912919, 0.025224576, 0.025030573, 0.025419982, 0.025415115, 0.025043226, 0.025213202, 0.025937655},
0265 {0.025903638, 0.025244655, 0.025023684, 0.025383398, 0.025399556, 0.025025292, 0.025254252, 0.025945694},
0266 {0.025855091, 0.025245849, 0.025018633, 0.025392413, 0.025386199, 0.025032433, 0.025258546, 0.025938246},
0267 {0.025898044, 0.025210425, 0.025039174, 0.025411554, 0.025418325, 0.025034439, 0.025230630, 0.025873626},
0268 {0.025908219, 0.025191441, 0.025016559, 0.025382898, 0.025416337, 0.025011142, 0.025181345, 0.025906562},
0269 {0.026026606, 0.025235830, 0.025005632, 0.025369690, 0.025375398, 0.025027767, 0.025254124, 0.025961736}};
0270
0271 const float RochCor::dpavgB[8][8] = {
0272 {0.025993525, 0.025262074, 0.025032936, 0.025402927, 0.025411082, 0.025025205, 0.025257010, 0.025987816},
0273 {0.026016457, 0.025236788, 0.025026049, 0.025445870, 0.025426455, 0.025012605, 0.025226581, 0.026018325},
0274 {0.026046038, 0.025298641, 0.025007364, 0.025396512, 0.025432880, 0.025031159, 0.025238138, 0.025957892},
0275 {0.026067569, 0.025302059, 0.025011169, 0.025396687, 0.025370463, 0.024996758, 0.025241644, 0.026118577},
0276 {0.026205140, 0.025263103, 0.025003300, 0.025373572, 0.025393818, 0.025008397, 0.025280542, 0.026013350},
0277 {0.026010447, 0.025247521, 0.025027158, 0.025427902, 0.025395642, 0.025008772, 0.025299819, 0.026073297},
0278 {0.026045245, 0.025236978, 0.025011242, 0.025420223, 0.025442011, 0.025030245, 0.025237170, 0.025985402},
0279 {0.026017886, 0.025261768, 0.025024263, 0.025412894, 0.025397047, 0.025037108, 0.025256271, 0.025938284}};
0280
0281 const float RochCor::mmavgB[8][8] = {
0282 {0.025922899, 0.025253554, 0.025024570, 0.025376081, 0.025366729, 0.025000526, 0.025238491, 0.026010632},
0283 {0.025886079, 0.025183953, 0.025007207, 0.025415872, 0.025388657, 0.025019143, 0.025195823, 0.025930482},
0284 {0.025934619, 0.025227622, 0.025035391, 0.025418887, 0.025417957, 0.025042034, 0.025207412, 0.025915978},
0285 {0.025975643, 0.025271630, 0.025027551, 0.025387821, 0.025396539, 0.025023647, 0.025264276, 0.025925383},
0286 {0.025951465, 0.025261106, 0.025024150, 0.025395296, 0.025387278, 0.025029785, 0.025264818, 0.025972973},
0287 {0.025864186, 0.025203249, 0.025038447, 0.025414974, 0.025419505, 0.025033609, 0.025228557, 0.025950473},
0288 {0.025857412, 0.025190903, 0.025020008, 0.025387552, 0.025414808, 0.025008508, 0.025180904, 0.025854423},
0289 {0.026021465, 0.025234665, 0.025004645, 0.025369725, 0.025376778, 0.025027170, 0.025226526, 0.025825617}};
0290
0291 const float RochCor::mpavgB[8][8] = {
0292 {0.025972655, 0.025257853, 0.025030870, 0.025399462, 0.025417248, 0.025026830, 0.025266203, 0.026020858},
0293 {0.026012686, 0.025235199, 0.025023719, 0.025450310, 0.025427728, 0.025011407, 0.025226418, 0.026002827},
0294 {0.026042418, 0.025301180, 0.025007263, 0.025397603, 0.025435786, 0.025029248, 0.025229272, 0.025961233},
0295 {0.025988419, 0.025271262, 0.025005581, 0.025394773, 0.025372960, 0.024995658, 0.025227015, 0.026099192},
0296 {0.026098501, 0.025217605, 0.024991889, 0.025370425, 0.025396433, 0.025007798, 0.025271868, 0.025980209},
0297 {0.026023494, 0.025241938, 0.025023119, 0.025431178, 0.025393405, 0.025007651, 0.025298716, 0.026031118},
0298 {0.026105678, 0.025244646, 0.025012836, 0.025423016, 0.025446063, 0.025025461, 0.025247461, 0.026041311},
0299 {0.026005132, 0.025261163, 0.025024802, 0.025413312, 0.025401136, 0.025030499, 0.025288682, 0.026116802}};
0300
0301
0302
0303
0304 const float RochCor::ptlow[85] = {
0305 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0,
0306 7.5, 8.0, 8.5, 9.0, 9.5, 10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5,
0307 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0,
0308 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 32.0, 34.0, 36.0, 38.0,
0309 40.0, 44.0, 48.0, 52.0, 56.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 110.0,
0310 120.0, 130.0, 140.0, 150.0, 175.0, 200.0, 250.0, 350.0, 500.0, 1000.0};
0311
0312
0313
0314 const float RochCor::zptscl[84] = {
0315 1.49177, 1.45654, 1.36283, 1.28569, 1.2418, 1.12336, 1.10416, 1.08731, 0.994051, 0.96532, 0.94427,
0316 0.932725, 0.918082, 0.899665, 0.898398, 0.927687, 0.908047, 0.892392, 0.924027, 0.945895, 0.937149, 0.923983,
0317 0.923387, 0.955362, 0.947812, 0.962943, 0.948781, 0.961555, 0.95222, 0.999207, 0.973884, 0.993013, 0.953487,
0318 0.951402, 0.985583, 0.986603, 0.981388, 1.00022, 1.0294, 0.964748, 0.974592, 1.01546, 0.992343, 1.00101,
0319 0.990866, 0.98982, 1.02924, 1.02265, 0.967695, 1.02411, 0.97331, 1.01052, 1.01561, 0.992594, 0.976504,
0320 1.01205, 0.981111, 1.00078, 1.02078, 1.00719, 1.0099, 1.02865, 1.03845, 1.03254, 1.09815, 1.10263,
0321 1.06302, 1.0725, 1.14703, 1.10574, 1.13911, 1.16947, 1.1709, 1.11413, 1.28793, 1.18953, 1.20212,
0322 1.18112, 1.25471, 1.15329, 1.14276, 1.17223, 1.09173, 2.00229};
0323
0324 const float RochCor::zptscler[84] = {
0325 0.0270027, 0.0154334, 0.0115338, 0.00958085, 0.0084683, 0.00736665, 0.0069567, 0.00671434, 0.00617693,
0326 0.00601943, 0.00594735, 0.00594569, 0.00594903, 0.00595495, 0.00608115, 0.00633704, 0.0063916, 0.0064468,
0327 0.00678106, 0.00706769, 0.00717517, 0.00727958, 0.00747182, 0.00785544, 0.00798754, 0.00828787, 0.00839147,
0328 0.00865826, 0.00876775, 0.00933276, 0.00935768, 0.0097289, 0.00962058, 0.00983828, 0.0103044, 0.0104871,
0329 0.0106575, 0.0110388, 0.0114986, 0.0111494, 0.0115202, 0.0121059, 0.0121345, 0.0124923, 0.0125972,
0330 0.0128401, 0.0134519, 0.0136279, 0.0133414, 0.014186, 0.00992195, 0.0105984, 0.0109484, 0.0111756,
0331 0.0114579, 0.00870013, 0.00904749, 0.00970734, 0.0104583, 0.0109818, 0.00837852, 0.00939894, 0.010415,
0332 0.0113433, 0.013007, 0.0128788, 0.0140174, 0.0156993, 0.0181717, 0.019765, 0.0222326, 0.0249408,
0333 0.0272806, 0.0211706, 0.0278087, 0.0306654, 0.0361387, 0.041327, 0.0341513, 0.0440116, 0.0473006,
0334 0.0680212, 0.149162, 0.56279};
0335
0336 RochCor::~RochCor() {}
0337
0338 RochCor::RochCor() {
0339 eran.SetSeed(123456);
0340 sran.SetSeed(1234);
0341
0342 for (int i = 0; i < 8; ++i) {
0343 for (int j = 0; j < 8; ++j) {
0344 mptsys_mc_dm[i][j] = 0;
0345 mptsys_mc_da[i][j] = 0;
0346 mptsys_da_dm[i][j] = 0;
0347 mptsys_da_da[i][j] = 0;
0348 }
0349 }
0350 }
0351
0352 RochCor::RochCor(int seed) {
0353 eran.SetSeed(123456);
0354 sran.SetSeed(seed);
0355
0356 for (int i = 0; i < 8; ++i) {
0357 for (int j = 0; j < 8; ++j) {
0358 mptsys_mc_dm[i][j] = sran.Gaus(0.0, 1.0);
0359 mptsys_mc_da[i][j] = sran.Gaus(0.0, 1.0);
0360 mptsys_da_dm[i][j] = sran.Gaus(0.0, 1.0);
0361 mptsys_da_da[i][j] = sran.Gaus(0.0, 1.0);
0362 }
0363 }
0364 }
0365
0366 void RochCor::momcor_mc(TLorentzVector& mu, float charge, float sysdev, int runopt) {
0367
0368
0369 float ptmu = mu.Pt();
0370 float muphi = mu.Phi();
0371 float mueta = mu.Eta();
0372
0373 float px = mu.Px();
0374 float py = mu.Py();
0375 float pz = mu.Pz();
0376 float e = mu.E();
0377
0378 int mu_phibin = phibin(muphi);
0379 int mu_etabin = etabin(mueta);
0380
0381
0382
0383 float dm = 0.0;
0384 float da = 0.0;
0385
0386 if (runopt == 0) {
0387 dm = (mcor_bfA[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin] * mcor_bfAer[mu_phibin][mu_etabin]) /
0388 mmavgA[mu_phibin][mu_etabin];
0389 da = mcor_maA[mu_phibin][mu_etabin] + mptsys_mc_da[mu_phibin][mu_etabin] * mcor_maAer[mu_phibin][mu_etabin];
0390 } else if (runopt == 1) {
0391 dm = (mcor_bfB[mu_phibin][mu_etabin] + mptsys_mc_dm[mu_phibin][mu_etabin] * mcor_bfBer[mu_phibin][mu_etabin]) /
0392 mmavgB[mu_phibin][mu_etabin];
0393 da = mcor_maB[mu_phibin][mu_etabin] + mptsys_mc_da[mu_phibin][mu_etabin] * mcor_maBer[mu_phibin][mu_etabin];
0394 }
0395
0396 float cor = 1.0 / (1.0 + dm + charge * da * ptmu);
0397
0398
0399 px *= cor;
0400 py *= cor;
0401 pz *= cor;
0402 e *= cor;
0403
0404 float recm = 0.0;
0405
0406 float delta = 0.0;
0407 float sf = 0.0;
0408
0409 float gscler = 0.0;
0410 float deltaer = 0.0;
0411 float sfer = 0.0;
0412
0413 if (runopt == 0) {
0414 recm = recmA;
0415
0416
0417 delta = deltaA;
0418 sf = sfA;
0419
0420 gscler = TMath::Sqrt(TMath::Power(mgsclA_stat, 2) + TMath::Power(mgsclA_syst, 2));
0421 deltaer = TMath::Sqrt(TMath::Power(deltaA_stat, 2) + TMath::Power(deltaA_syst, 2));
0422 sfer = TMath::Sqrt(TMath::Power(sfA_stat, 2) + TMath::Power(sfA_syst, 2));
0423 } else if (runopt == 1) {
0424 recm = recmB;
0425
0426
0427 delta = deltaB;
0428 sf = sfB;
0429
0430 gscler = TMath::Sqrt(TMath::Power(mgsclB_stat, 2) + TMath::Power(mgsclB_syst, 2));
0431 deltaer = TMath::Sqrt(TMath::Power(deltaB_stat, 2) + TMath::Power(deltaB_syst, 2));
0432 sfer = TMath::Sqrt(TMath::Power(sfB_stat, 2) + TMath::Power(sfB_syst, 2));
0433 }
0434
0435 float tune =
0436 1.0 / (1.0 + (delta + sysdev * deltaer) * sqrt(px * px + py * py) * eran.Gaus(1.0, (sf + sysdev * sfer)));
0437
0438 px *= (tune);
0439 py *= (tune);
0440 pz *= (tune);
0441 e *= (tune);
0442
0443 float gscl = (genm_smr / recm);
0444
0445 px *= (gscl + sysdev * gscler);
0446 py *= (gscl + sysdev * gscler);
0447 pz *= (gscl + sysdev * gscler);
0448 e *= (gscl + sysdev * gscler);
0449
0450 mu.SetPxPyPzE(px, py, pz, e);
0451 }
0452
0453 void RochCor::momcor_data(TLorentzVector& mu, float charge, float sysdev, int runopt) {
0454 float ptmu = mu.Pt();
0455
0456 float muphi = mu.Phi();
0457 float mueta = mu.Eta();
0458
0459 float px = mu.Px();
0460 float py = mu.Py();
0461 float pz = mu.Pz();
0462 float e = mu.E();
0463
0464 int mu_phibin = phibin(muphi);
0465 int mu_etabin = etabin(mueta);
0466
0467
0468
0469 float dm = 0.0;
0470 float da = 0.0;
0471
0472 if (runopt == 0) {
0473 dm = (dcor_bfA[mu_phibin][mu_etabin] + mptsys_da_dm[mu_phibin][mu_etabin] * dcor_bfAer[mu_phibin][mu_etabin]) /
0474 dmavgA[mu_phibin][mu_etabin];
0475 da = dcor_maA[mu_phibin][mu_etabin] + mptsys_da_da[mu_phibin][mu_etabin] * dcor_maAer[mu_phibin][mu_etabin];
0476 } else if (runopt == 1) {
0477 dm = (dcor_bfB[mu_phibin][mu_etabin] + mptsys_da_dm[mu_phibin][mu_etabin] * dcor_bfBer[mu_phibin][mu_etabin]) /
0478 dmavgB[mu_phibin][mu_etabin];
0479 da = dcor_maB[mu_phibin][mu_etabin] + mptsys_da_da[mu_phibin][mu_etabin] * dcor_maBer[mu_phibin][mu_etabin];
0480 }
0481
0482 float cor = 1.0 / (1.0 + dm + charge * da * ptmu);
0483
0484 px *= cor;
0485 py *= cor;
0486 pz *= cor;
0487 e *= cor;
0488
0489
0490 float recm = 0.0;
0491 float gscler = 0.0;
0492
0493 if (runopt == 0) {
0494 recm = drecmA;
0495 gscler = TMath::Sqrt(TMath::Power(dgsclA_stat, 2) + TMath::Power(dgsclA_syst, 2));
0496 } else if (runopt == 1) {
0497 recm = drecmB;
0498 gscler = TMath::Sqrt(TMath::Power(dgsclB_stat, 2) + TMath::Power(dgsclB_syst, 2));
0499 }
0500
0501 float gscl = (genm_smr / recm);
0502
0503 px *= (gscl + sysdev * gscler);
0504 py *= (gscl + sysdev * gscler);
0505 pz *= (gscl + sysdev * gscler);
0506 e *= (gscl + sysdev * gscler);
0507
0508 mu.SetPxPyPzE(px, py, pz, e);
0509 }
0510
0511 void RochCor::musclefit_data(TLorentzVector& mu, TLorentzVector& mubar) {
0512 float dpar1 = 0.0;
0513 float dpar2 = 0.0;
0514 float epar1 = 0.0;
0515 float epar2 = 0.0;
0516
0517 if (fabs(mu.PseudoRapidity()) <= 0.9) {
0518 dpar1 = d0par;
0519 epar1 = e0par;
0520 } else if (mu.PseudoRapidity() > 0.9) {
0521 dpar1 = d1par;
0522 epar1 = e1par;
0523 } else if (mu.PseudoRapidity() < -0.9) {
0524 dpar1 = d2par;
0525 epar1 = e2par;
0526 }
0527
0528 if (fabs(mubar.PseudoRapidity()) <= 0.9) {
0529 dpar2 = d0par;
0530 epar2 = e0par;
0531 } else if (mubar.PseudoRapidity() > 0.9) {
0532 dpar2 = d1par;
0533 epar2 = e1par;
0534 } else if (mubar.PseudoRapidity() < -0.9) {
0535 dpar2 = d2par;
0536 epar2 = e2par;
0537 }
0538
0539 float corr1 = 1.0 + bpar * mu.Pt() +
0540 (-1.0) * cpar * mu.Pt() * TMath::Sign(float(1.0), float(mu.PseudoRapidity())) *
0541 TMath::Power(mu.PseudoRapidity(), 2) +
0542 (-1.0) * dpar1 * mu.Pt() * sin(mu.Phi() + epar1);
0543 float corr2 = 1.0 + bpar * mubar.Pt() +
0544 (1.0) * cpar * mubar.Pt() * TMath::Sign(float(1.0), float(mubar.PseudoRapidity())) *
0545 TMath::Power(mubar.PseudoRapidity(), 2) +
0546 (1.0) * dpar2 * mubar.Pt() * sin(mubar.Phi() + epar2);
0547
0548 float px1 = mu.Px();
0549 float py1 = mu.Py();
0550 float pz1 = mu.Pz();
0551 float e1 = mu.E();
0552
0553 float px2 = mubar.Px();
0554 float py2 = mubar.Py();
0555 float pz2 = mubar.Pz();
0556 float e2 = mubar.E();
0557
0558 px1 *= corr1;
0559 py1 *= corr1;
0560 pz1 *= corr1;
0561 e1 *= corr1;
0562
0563 px2 *= corr2;
0564 py2 *= corr2;
0565 pz2 *= corr2;
0566 e2 *= corr2;
0567
0568 mu.SetPxPyPzE(px1, py1, pz1, e1);
0569 mubar.SetPxPyPzE(px2, py2, pz2, e2);
0570 }
0571
0572 Int_t RochCor::phibin(float phi) {
0573 int nphibin = -1;
0574
0575 for (int i = 0; i < 8; i++) {
0576 if (-pi + (2.0 * pi / 8.0) * i <= phi && -pi + (2.0 * pi / 8.0) * (i + 1) > phi) {
0577 nphibin = i;
0578 break;
0579 }
0580 }
0581
0582 return nphibin;
0583 }
0584
0585 Int_t RochCor::etabin(float eta) {
0586 int nbin = -1;
0587
0588 for (int i = 0; i < 8; i++) {
0589 if (netabin[i] <= eta && netabin[i + 1] > eta) {
0590 nbin = i;
0591 break;
0592 }
0593 }
0594
0595 return nbin;
0596 }
0597
0598 float RochCor::zptcor(float gzpt) {
0599 int ibin(0);
0600
0601
0602 if (gzpt > ptlow[nptbins])
0603 return nptbins - 1;
0604 if (gzpt < ptlow[0])
0605 return 0;
0606
0607 for (int i = 0; i < nptbins; ++i) {
0608 if (gzpt >= ptlow[i] && gzpt < ptlow[i + 1]) {
0609 ibin = i;
0610 break;
0611 }
0612 }
0613
0614 float zptwt = zptscl[ibin];
0615
0616 return zptwt;
0617 }
0618
0619 }