00001 #include "FastShowerUtils/HadEarlyEcConfigurer.h"
00002
00003
00004
00005
00006
00007 #include "FastShowerUtils/Samplers/S0HadEarlyEcalEc1.h"
00008 #include "FastShowerUtils/Samplers/PeakMeanS0HadEarlyEcalEc1.h"
00009 #include "FastShowerUtils/Samplers/PeakSigmaS0HadEarlyEcalEc1.h"
00010 #include "FastShowerUtils/Samplers/TailFracS0HadEarlyEcalEc1.h"
00011
00012 #include "FastShowerUtils/Samplers/C0HadEarlyEcalEc1.h"
00013 #include "FastShowerUtils/Samplers/PeakMeanC0HadEarlyEcalEc1.h"
00014 #include "FastShowerUtils/Samplers/PeakSigmaC0HadEarlyEcalEc1.h"
00015 #include "FastShowerUtils/Samplers/TailFracC0HadEarlyEcalEc1.h"
00016
00017 #include "FastShowerUtils/Samplers/SNHadEarlyEcalEc1.h"
00018 #include "FastShowerUtils/Samplers/PeakMeanSNHadEarlyEcalEc1.h"
00019 #include "FastShowerUtils/Samplers/PeakSigmaSNHadEarlyEcalEc1.h"
00020
00021
00022 #include "FastShowerUtils/ANSamplerRouterSNSample.h"
00023
00024 #include "FastShowerUtils/Samplers/ANHadEarlyEcalEc1.h"
00025 #include "FastShowerUtils/Samplers/PeakMeanANHadEarlyEcalEc1.h"
00026 #include "FastShowerUtils/Samplers/PeakSigmaANHadEarlyEcalEc1.h"
00027 #include "FastShowerUtils/Samplers/TailFracANHadEarlyEcalEc1.h"
00028
00029 #include "FastShowerUtils/Samplers/ANHadEarlyEcalEc2.h"
00030
00031
00032
00033 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell1.h"
00034 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell2.h"
00035 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell3.h"
00036 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell4.h"
00037 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell5.h"
00038 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell6.h"
00039 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell7.h"
00040 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell8.h"
00041 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell9.h"
00042 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell10.h"
00043 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell11.h"
00044 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell12.h"
00045 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell13.h"
00046 #include "FastShowerUtils/HaloCells/HadEarlyEcalEcHaloCell14.h"
00047
00048
00049
00050
00051
00052
00053
00054 #include "FastShowerUtils/S0SamplerRouterEnergySample.h"
00055
00056 #include "FastShowerUtils/Samplers/S0HadEarlyHcalEc1.h"
00057 #include "FastShowerUtils/Samplers/TailFracS0HadEarlyHcalEc1.h"
00058
00059 #include "FastShowerUtils/Samplers/S0HadEarlyHcalEc2.h"
00060 #include "FastShowerUtils/Samplers/PeakMeanS0HadEarlyHcalEc1.h"
00061 #include "FastShowerUtils/Samplers/PeakSigmaS0HadEarlyHcalEc1.h"
00062 #include "FastShowerUtils/Samplers/TailFracS0HadEarlyHcalEc2.h"
00063
00064 #include "FastShowerUtils/Samplers/S0HadEarlyHcalEc3.h"
00065
00066
00067 #include "FastShowerUtils/C0SamplerRouterRandomSample.h"
00068 #include "FastShowerUtils/C0SamplerRouterEnergySample.h"
00069
00070 #include "FastShowerUtils/Samplers/C0HadEarlyHcalEc1.h"
00071 #include "FastShowerUtils/Samplers/PeakMeanC0HadEarlyHcalEc1.h"
00072 #include "FastShowerUtils/Samplers/PeakSigmaC0HadEarlyHcalEc1.h"
00073 #include "FastShowerUtils/Samplers/TailFracC0HadEarlyHcalEc1.h"
00074
00075 #include "FastShowerUtils/Samplers/C0HadEarlyHcalEc2.h"
00076 #include "FastShowerUtils/Samplers/TailFracC0HadEarlyHcalEc2.h"
00077
00078 #include "FastShowerUtils/Samplers/C0HadEarlyHcalEc3.h"
00079 #include "FastShowerUtils/Samplers/TailFracC0HadEarlyHcalEc3.h"
00080
00081 #include "FastShowerUtils/Samplers/SNHadEarlyHcalEc1.h"
00082 #include "FastShowerUtils/Samplers/PeakMeanSNHadEarlyHcalEc1.h"
00083 #include "FastShowerUtils/Samplers/PeakSigmaSNHadEarlyHcalEc1.h"
00084
00085
00086 #include "FastShowerUtils/ANSamplerRouterSNSample.h"
00087
00088 #include "FastShowerUtils/Samplers/ANHadEarlyHcalEc1.h"
00089 #include "FastShowerUtils/Samplers/PeakMeanANHadEarlyHcalEc1.h"
00090 #include "FastShowerUtils/Samplers/PeakSigmaANHadEarlyHcalEc1.h"
00091 #include "FastShowerUtils/Samplers/TailFracANHadEarlyHcalEc11.h"
00092 #include "FastShowerUtils/Samplers/TailFracANHadEarlyHcalEc12.h"
00093 #include "FastShowerUtils/Samplers/TailFracANHadEarlyHcalEc13.h"
00094
00095 #include "FastShowerUtils/Samplers/ANHadEarlyHcalEc2.h"
00096
00097
00098 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell1.h"
00099 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell2.h"
00100 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell3.h"
00101 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell4.h"
00102 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell5.h"
00103 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell6.h"
00104 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell7.h"
00105 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell8.h"
00106 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell9.h"
00107 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell10.h"
00108 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell11.h"
00109 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell12.h"
00110 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell13.h"
00111 #include "FastShowerUtils/HaloCells/HadEarlyHcalEcHaloCell14.h"
00112
00113
00114 #include "FastShowerUtils/Normalisers/HadEarlyEcalNormaliser.h"
00115 #include "FastShowerUtils/Normalisers/HadEarlyHcalNormaliser.h"
00116 #include "FastShowerUtils/Normalisers/HadEcalEtaResponseEc.h"
00117 #include "FastShowerUtils/Normalisers/HadHcalEtaResponseEc.h"
00118 #include "FastShowerUtils/Normalisers/HadEarlyEcalCoreFracEc.h"
00119 #include "FastShowerUtils/Normalisers/HadEarlyHcalCoreFracEc.h"
00120
00121 #include "FastShowerUtils/PtrConverter.h"
00122 #include "FastShowerUtils/ISampler.h"
00123 #include "FastShowerUtils/SamplerPtr.h"
00124 #include "FastShowerUtils/INormaliser.h"
00125 #include "FastShowerUtils/NormaliserPtr.h"
00126 #include "FastShowerUtils/IDepositor.h"
00127 #include "FastShowerUtils/DepositorPtr.h"
00128 #include "FastShowerUtils/CoreDepositor.h"
00129 #include "FastShowerUtils/HaloDepositor.h"
00130 #include "FastShowerUtils/PencilDepositor.h"
00131
00132 #include "FastShowerUtils/PtrAdapter.h"
00133
00134 #include <float.h>
00135 #include <string>
00136 #include <algorithm>
00137
00138 namespace FastShower{
00139
00140
00141 HadEarlyEcConfigurer::HadEarlyEcConfigurer(Moni m):ConfigurerBase(m){
00142 this->initialise();
00143 }
00144 HadEarlyEcConfigurer::HadEarlyEcConfigurer(NoMoni nm):ConfigurerBase(nm){
00145 this->initialise();
00146 }
00147 void HadEarlyEcConfigurer::initialise(){
00148
00149
00150 this->addFn("ES0PeakMean", new PeakMeanS0HadEarlyEcalEc1);
00151 this->addFn("ES0PeakSigma", new PeakSigmaS0HadEarlyEcalEc1);
00152 this->addFn("ES0TailFrac", new TailFracS0HadEarlyEcalEc1);
00153
00154 this->addFn("EC0PeakMean", new PeakMeanC0HadEarlyEcalEc1);
00155 this->addFn("EC0PeakSigma", new PeakSigmaC0HadEarlyEcalEc1);
00156 this->addFn("EC0TailFrac", new TailFracC0HadEarlyEcalEc1);
00157
00158 this->addFn("ESNPeakMean", new PeakMeanSNHadEarlyEcalEc1);
00159 this->addFn("ESNPeakSigma", new PeakSigmaSNHadEarlyEcalEc1);
00160
00161 this->addFn("EAN1PeakMean", new PeakMeanANHadEarlyEcalEc1);
00162 this->addFn("EAN1PeakSigma", new PeakSigmaANHadEarlyEcalEc1);
00163 this->addFn("EAN1TailFrac", new TailFracANHadEarlyEcalEc1);
00164
00165 this->addFn("EAN2PeakMean", new PeakMeanANHadEarlyEcalEc1);
00166 this->addFn("EAN2PeakSigma", new PeakSigmaANHadEarlyEcalEc1);
00167
00168
00169
00170 this->addFn("HS01TailFrac", new TailFracS0HadEarlyHcalEc1);
00171
00172 this->addFn("HS02PeakMean", new PeakMeanS0HadEarlyHcalEc1);
00173 this->addFn("HS02PeakSigma", new PeakSigmaS0HadEarlyHcalEc1);
00174 this->addFn("HS02TailFrac", new TailFracS0HadEarlyHcalEc2);
00175
00176 this->addFn("HS03PeakMean", new PeakMeanS0HadEarlyHcalEc1);
00177 this->addFn("HS03PeakSigma", new PeakSigmaS0HadEarlyHcalEc1);
00178 this->addFn("HS03TailFrac", new TailFracS0HadEarlyHcalEc2);
00179
00180 this->addFn("HC01TailFrac", new TailFracC0HadEarlyHcalEc1);
00181
00182 this->addFn("HC02PeakMean", new PeakMeanC0HadEarlyHcalEc1);
00183 this->addFn("HC02PeakSigma", new PeakSigmaC0HadEarlyHcalEc1);
00184 this->addFn("HC02TailFrac", new TailFracC0HadEarlyHcalEc2);
00185
00186 this->addFn("HC03PeakMean", new PeakMeanC0HadEarlyHcalEc1);
00187 this->addFn("HC03PeakSigma", new PeakSigmaC0HadEarlyHcalEc1);
00188 this->addFn("HC03TailFrac", new TailFracC0HadEarlyHcalEc3);
00189
00190 this->addFn("HSNPeakMean", new PeakMeanSNHadEarlyHcalEc1);
00191 this->addFn("HSNPeakSigma", new PeakSigmaSNHadEarlyHcalEc1);
00192
00193 this->addFn("HAN11PeakMean", new PeakMeanANHadEarlyHcalEc1);
00194 this->addFn("HAN11PeakSigma", new PeakSigmaANHadEarlyHcalEc1);
00195 this->addFn("HAN11TailFrac", new TailFracANHadEarlyHcalEc11);
00196
00197 this->addFn("HAN12PeakMean", new PeakMeanANHadEarlyHcalEc1);
00198 this->addFn("HAN12PeakSigma", new PeakSigmaANHadEarlyHcalEc1);
00199 this->addFn("HAN12TailFrac", new TailFracANHadEarlyHcalEc12);
00200
00201 this->addFn("HAN13PeakMean", new PeakMeanANHadEarlyHcalEc1);
00202 this->addFn("HAN13PeakSigma", new PeakSigmaANHadEarlyHcalEc1);
00203 this->addFn("HAN13TailFrac", new TailFracANHadEarlyHcalEc13);
00204
00205 this->addFn("HAN2PeakMean", new PeakMeanANHadEarlyHcalEc1);
00206 this->addFn("HAN2PeakSigma", new PeakSigmaANHadEarlyHcalEc1);
00207
00208
00209
00210
00211 this->addFnPP("eHaloCell1", new HadEarlyEcalEcHaloCell1);
00212 this->addFnPP("eHaloCell2", new HadEarlyEcalEcHaloCell2);
00213 this->addFnPP("eHaloCell3", new HadEarlyEcalEcHaloCell3);
00214 this->addFnPP("eHaloCell4", new HadEarlyEcalEcHaloCell4);
00215 this->addFnPP("eHaloCell5", new HadEarlyEcalEcHaloCell5);
00216 this->addFnPP("eHaloCell6", new HadEarlyEcalEcHaloCell6);
00217 this->addFnPP("eHaloCell7", new HadEarlyEcalEcHaloCell7);
00218 this->addFnPP("eHaloCell8", new HadEarlyEcalEcHaloCell8);
00219 this->addFnPP("eHaloCell9", new HadEarlyEcalEcHaloCell9);
00220 this->addFnPP("eHaloCell10", new HadEarlyEcalEcHaloCell10);
00221 this->addFnPP("eHaloCell11", new HadEarlyEcalEcHaloCell11);
00222 this->addFnPP("eHaloCell12", new HadEarlyEcalEcHaloCell12);
00223 this->addFnPP("eHaloCell13", new HadEarlyEcalEcHaloCell13);
00224 this->addFnPP("eHaloCell14", new HadEarlyEcalEcHaloCell14);
00225
00226
00227
00228
00229 this->addFnPP("hHaloCell1", new HadEarlyHcalEcHaloCell1);
00230 this->addFnPP("hHaloCell2", new HadEarlyHcalEcHaloCell2);
00231 this->addFnPP("hHaloCell3", new HadEarlyHcalEcHaloCell3);
00232 this->addFnPP("hHaloCell4", new HadEarlyHcalEcHaloCell4);
00233 this->addFnPP("hHaloCell5", new HadEarlyHcalEcHaloCell5);
00234 this->addFnPP("hHaloCell6", new HadEarlyHcalEcHaloCell6);
00235 this->addFnPP("hHaloCell7", new HadEarlyHcalEcHaloCell7);
00236 this->addFnPP("hHaloCell8", new HadEarlyHcalEcHaloCell8);
00237 this->addFnPP("hHaloCell9", new HadEarlyHcalEcHaloCell9);
00238 this->addFnPP("hHaloCell10", new HadEarlyHcalEcHaloCell10);
00239 this->addFnPP("hHaloCell11", new HadEarlyHcalEcHaloCell11);
00240 this->addFnPP("hHaloCell12", new HadEarlyHcalEcHaloCell12);
00241 this->addFnPP("hHaloCell13", new HadEarlyHcalEcHaloCell13);
00242 this->addFnPP("hHaloCell14", new HadEarlyHcalEcHaloCell14);
00243
00244
00245
00246
00247 this->addFnPP("EcalEtaResponse", new HadEcalEtaResponseEc);
00248 this->addFnPP("HcalEtaResponse", new HadHcalEtaResponseEc);
00249 this->addFnPP("EcalCoreFraction", new HadEarlyEcalCoreFracEc);
00250 this->addFnPP("HcalCoreFraction", new HadEarlyHcalCoreFracEc);
00251
00252
00253
00254
00255 this->addIUG("ES0Peak", this->makeUpdatingGaussian0LP("ES0") );
00256 this->addIUG("EC0Peak", this->makeUpdatingGaussian0LP("EC0") );
00257 this->addIUG("ESNPeak", this->makeUpdatingGaussian01P("ESN") );
00258 this->addIUG("EAN1Peak", this->makeUpdatingGaussian0LP("EAN1") );
00259 this->addIUG("EAN2Peak", this->makeUpdatingGaussian0LP("EAN2") );
00260
00261
00262
00263
00264 this->addSampler("ES0", new S0HadEarlyEcalEc1(this, "ES0") );
00265 this->addSampler("EC0", new C0HadEarlyEcalEc1(this, "EC0") );
00266 this->addSampler("ESN", new SNHadEarlyEcalEc1(this, "ESN") );
00267 this->addSampler("EAN1", new ANHadEarlyEcalEc1(this, "EAN1") );
00268 this->addSampler("EAN2", new ANHadEarlyEcalEc2(this, "EAN2") );
00269
00270 this->addSampler("EAN", this->makeEAN() );
00271
00272
00273
00274
00275 this->addIUG("HS02Peak", this->makeUpdatingGaussian0LP("HS02") );
00276 this->addIUG("HS03Peak", this->makeUpdatingGaussian0LP("HS03") );
00277 this->addIUG("HC02Peak", this->makeUpdatingGaussian02P("HC02") );
00278 this->addIUG("HC03Peak", this->makeUpdatingGaussian0LP("HC03") );
00279 this->addIUG("HSNPeak", this->makeUpdatingGaussian01P("HSN") );
00280 this->addIUG("HAN11Peak", this->makeUpdatingGaussian0LP("HAN11") );
00281 this->addIUG("HAN12Peak", this->makeUpdatingGaussian0LP("HAN12") );
00282 this->addIUG("HAN13Peak", this->makeUpdatingGaussian0LP("HAN13") );
00283 this->addIUG("HAN2Peak", this->makeUpdatingGaussian0LP("HAN2") );
00284
00285
00286
00287
00288 this->addSampler("HS01", new S0HadEarlyHcalEc1(this, "HS01") );
00289 this->addSampler("HS02", new S0HadEarlyHcalEc2(this, "HS02") );
00290 this->addSampler("HS03", new S0HadEarlyHcalEc3(this, "HS03") );
00291 this->addSampler("HC01", new C0HadEarlyHcalEc1(this, "HC01") );
00292 this->addSampler("HC02", new C0HadEarlyHcalEc2(this, "HC02") );
00293 this->addSampler("HC03", new C0HadEarlyHcalEc3(this, "HC03") );
00294 this->addSampler("HSN", new SNHadEarlyHcalEc1(this, "HSN") );
00295 this->addSampler("HAN11", new ANHadEarlyHcalEc1(this, "HAN11") );
00296 this->addSampler("HAN12", new ANHadEarlyHcalEc1(this, "HAN12") );
00297 this->addSampler("HAN13", new ANHadEarlyHcalEc1(this, "HAN13") );
00298 this->addSampler("HAN2", new ANHadEarlyHcalEc2(this, "HAN2") );
00299
00300 this->addSampler("HS0", this->makeHS0() );
00301 this->addSampler("HC0", this->makeHC0() );
00302 this->addSampler("HAN", this->makeHAN() );
00303
00304
00305
00306
00307 this->addDepositorsE();
00308 this->addDepositorsH();
00309
00310
00311
00312 this->normalisers();
00313 }
00314
00316
00317
00318 std::vector< std::pair<double, ISampler*> > v;
00319 v.push_back(std::pair<double, ISampler*>(0.15, this->findSampler("EAN1")));
00320 v.push_back(std::pair<double, ISampler*>(1.00, this->findSampler("EAN2")));
00321
00322 return new ANSamplerRouterSNSample(v, 0.0, "EANRouter");
00323
00324 }
00326 ISampler* HadEarlyEcConfigurer::makeHS0() const {
00327
00328 std::vector< std::pair<double, ISampler*> > v;
00329 v.push_back(std::pair<double, ISampler*>( 15.0, this->findSampler("HS01")));
00330 v.push_back(std::pair<double, ISampler*>( 30.0, this->findSampler("HS02")));
00331 v.push_back(std::pair<double, ISampler*>(FLT_MAX, this->findSampler("HS03")));
00332
00333 return new S0SamplerRouterEnergySample(v, 0.0, "HS0Router");
00334
00335 }
00337 ISampler* HadEarlyEcConfigurer::makeHC0() const {
00338
00339 std::vector< std::pair<double, ISampler*> > v;
00340 v.push_back(std::pair<double, ISampler*>( 15.0, this->findSampler("HC01")));
00341 v.push_back(std::pair<double, ISampler*>( 30.0, this->findSampler("HC02")));
00342 v.push_back(std::pair<double, ISampler*>(FLT_MAX, this->findSampler("HC03")));
00343
00344 return new C0SamplerRouterEnergySample(v, 0.0, "HC0Router");
00345
00346 }
00348 ISampler* HadEarlyEcConfigurer::makeHAN() const {
00349
00350 std::vector< std::pair<double, ISampler*> > vr;
00351 vr.push_back(std::pair<double, ISampler*>(0.05, this->findSampler("HAN11")));
00352 vr.push_back(std::pair<double, ISampler*>(0.10, this->findSampler("HAN12")));
00353 vr.push_back(std::pair<double, ISampler*>(0.15, this->findSampler("HAN13")));
00354
00355 ISampler* snSampler = new ANSamplerRouterSNSample(vr, 0.0, "HAN1Router");
00356
00357 std::vector< std::pair<double, ISampler*> > v;
00358 v.push_back(std::pair<double, ISampler*>(0.15, snSampler));
00359 v.push_back(std::pair<double, ISampler*>(1.00, this->findSampler("HAN2")));
00360
00361 return new ANSamplerRouterSNSample(v, 0.0, "HANRouter");
00362
00363 }
00365 void HadEarlyEcConfigurer::addDepositorsE(){
00366
00367 this->addEdepositor( "EcalCore",
00368 new CoreDepositor(
00369 this->findSampler("ES0"),
00370 this->findSampler("EC0"),
00371 this->findSampler("ESN"),
00372 this->findSampler("EAN")
00373 )
00374 );
00375
00376 this->addEdepositor( "EcalHalo", new HaloDepositor(this,"eHalo"));
00377
00378 }
00380 void HadEarlyEcConfigurer::addDepositorsH(){
00381
00382 this->addHdepositor( "HcalCore",
00383 new CoreDepositor(
00384 this->findSampler("HS0"),
00385 this->findSampler("HC0"),
00386 this->findSampler("HSN"),
00387 this->findSampler("HAN")
00388 )
00389 );
00390
00391 this->addHdepositor( "HcalHalo", new HaloDepositor(this,"hHalo"));
00392
00393 }
00395 EnergyLimiter* HadEarlyEcConfigurer::energyLimiter() const {
00396 cout<<"HadEarlyEcConfigurer: constructing energy limiter"<<endl;
00397 return new EnergyLimiter(10., 50., "HadEarlyEcEnergyLimiter");
00398 }
00400 void HadEarlyEcConfigurer::normalisers(){
00401 this->addNormaliser("EcalNormaliser",
00402 new HadEarlyEcalNormaliser(this,"HadEarlyEcEcalNormaliser"));
00403 this->addNormaliser("HcalNormaliser",
00404 new HadEarlyHcalNormaliser(this,"HadEarlyEcHcalNormaliser"));
00405 }
00406 }
00407
00408
00409
00410
00411
00412
00413
00414
00415