00001 #include "AtlfastAlgs/ISmearerFactory.h" 00002 00003 00004 namespace Atlfast{ 00005 00006 ISmearer* 00007 ISmearerFactory::create(int particleType, 00008 const int randSeed, 00009 const int lumi, 00010 const int muSmearKey, 00011 std::string& muonResFile, 00012 MsgStream& log, 00013 std::vector<double> smearParamArray, 00014 int smearParamSchema){ 00015 00016 ISmearer* smearer; 00017 00018 if (particleType == 11) 00019 { 00020 smearer = new ElectronSmearer(randSeed, lumi, log); 00021 smearer->setSmearParameters(smearParamArray); 00022 smearer->setSmearParamSchema(smearParamSchema); 00023 } 00024 else if (particleType == 13) 00025 { 00026 smearer = new MuonSmearer(randSeed, lumi, muSmearKey, muonResFile, log); 00027 smearer->setSmearParameters(smearParamArray); 00028 smearer->setSmearParamSchema(smearParamSchema); 00029 } 00030 else if (particleType == 22) 00031 { 00032 smearer = new PhotonSmearer(randSeed, lumi, log); 00033 smearer->setSmearParameters(smearParamArray); 00034 smearer->setSmearParamSchema(smearParamSchema); 00035 } 00036 else 00037 { 00038 smearer = new DefaultSmearer(randSeed); 00039 } 00040 00041 00042 return smearer; 00043 00044 } 00045 00046 }