00001 // File: KtJetAlgorithmWrapper.cc 00002 // Description: see FastJetProducer.h 00003 // Author: Andreas Oehler, University Karlsruhe (TH) 00004 // Author: Dorian Kcira, Institut de Physique Nucleaire, 00005 // Departement de Physique, Universite Catholique de Louvain 00006 // Creation Date: Nov. 06 2006 Initial version. 00007 // Redesigned by F.Ratnikov (UMd) Aug. 1, 2007 00008 //-------------------------------------------- 00009 00010 #include <string> 00011 00012 #include "fastjet/JetDefinition.hh" 00013 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h" 00014 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00015 00016 #include "RecoJets/JetAlgorithms/interface/KtJetAlgorithmWrapper.h" 00017 00018 KtJetAlgorithmWrapper::KtJetAlgorithmWrapper(const edm::ParameterSet& fConfig) 00019 : FastJetBaseWrapper (fConfig) 00020 { 00021 //configuring algorithm 00022 double rParam = fConfig.getParameter<double> ("FJ_ktRParam"); 00023 //choosing search-strategy: 00024 fastjet::Strategy fjStrategy = fastjet::plugin_strategy; 00025 std::string strategy = fConfig.getParameter<std::string>("Strategy"); 00026 if (strategy == "Best") fjStrategy = fastjet::Best; // Chooses best Strategy for every event, depending on N and ktRParam 00027 else if (strategy == "N2Plain") fjStrategy = fastjet::N2Plain; // N2Plain is best for N<50 00028 else if (strategy == "N2Tiled") fjStrategy = fastjet::N2Tiled; // N2Tiled is best for 50<N<400 00029 else if (strategy == "N2MinHeapTiled") fjStrategy = fastjet::N2MinHeapTiled; // N2MinHeapTiles is best for 400<N<15000 00030 else if (strategy == "NlnN") fjStrategy = fastjet::NlnN; // NlnN is best for N>15000 00031 else if (strategy == "NlnNCam") fjStrategy = fastjet::NlnNCam; // NlnNCam is best for N>6000 00032 else edm::LogError("FastJetDefinition") << "KtJetAlgorithmWrapper-> Unknown strategy: " 00033 << strategy 00034 << ". Known strategies: Best N2Plain N2Tiled N2MinHeapTiled NlnN" << std::endl; 00035 //additional strategies are possible, but not documented in the manual as they are experimental, 00036 //they are also not used by the "Best" method. Note: "NlnNCam" only works with 00037 //the cambridge_algorithm and does not link against CGAL, "NlnN" is only 00038 //available if fastjet is linked against CGAL. 00039 //The above given numbers of N are for ktRaram=1.0, for other ktRParam the numbers would be 00040 //different. 00041 00042 mJetDefinition = new fastjet::JetDefinition (fastjet::kt_algorithm, rParam, fjStrategy); 00043 } 00044 00045 KtJetAlgorithmWrapper::~KtJetAlgorithmWrapper () {} 00046