Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:34:52

0001 #ifndef __RecoJets_JetAlgorithms_CMSBoostedTauSeedingAlgorithm_h__
0002 #define __RecoJets_JetAlgorithms_CMSBoostedTauSeedingAlgorithm_h__
0003 
0004 // CMSBoostedTau Package
0005 //
0006 // Find subjets corresponding to decay products of tau lepton pair
0007 // and produce data-formats neccessary to seed tau reconstruction.
0008 //
0009 // Questions/Comments?
0010 //    for physics : Christian.Veelken@cern.ch
0011 //    for implementation : Salvatore.Rappoccio@cern.ch
0012 //
0013 //----------------------------------------------------------------------
0014 // This file is part of FastJet contrib.
0015 //
0016 // It is free software; you can redistribute it and/or modify it under
0017 // the terms of the GNU General Public License as published by the
0018 // Free Software Foundation; either version 2 of the License, or (at
0019 // your option) any later version.
0020 //
0021 // It is distributed in the hope that it will be useful, but WITHOUT
0022 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0023 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
0024 // License for more details.
0025 //
0026 // You should have received a copy of the GNU General Public License
0027 // along with this code. If not, see <http://www.gnu.org/licenses/>.
0028 //----------------------------------------------------------------------
0029 
0030 #include <fastjet/internal/base.hh>
0031 #include <fastjet/tools/Transformer.hh>
0032 #include <fastjet/CompositeJetStructure.hh>
0033 
0034 #include <fastjet/ClusterSequence.hh>
0035 #include <fastjet/Error.hh>
0036 #include <fastjet/JetDefinition.hh>
0037 //#include "fastjet/FunctionOfPseudoJet.hh"
0038 
0039 #include <map>
0040 #include <sstream>
0041 #include <string>
0042 
0043 FASTJET_BEGIN_NAMESPACE  // defined in fastjet/internal/base.hh
0044 
0045     namespace contrib {
0046   class CMSBoostedTauSeedingAlgorithmStructure;
0047 
0048   //------------------------------------------------------------------------
0049   /// \class CMSBoostedTauSeedingAlgorithm
0050   /// This class implements the CMS boosted tau algorithm
0051   ///
0052   class CMSBoostedTauSeedingAlgorithm : public Transformer {
0053   public:
0054     // constructors
0055     CMSBoostedTauSeedingAlgorithm(double ptMin,
0056                                   double muMin,
0057                                   double muMax,
0058                                   double yMin,
0059                                   double yMax,
0060                                   double dRMin,
0061                                   double dRMax,
0062                                   int maxDepth,
0063                                   int verbosity = 0);
0064 
0065     // destructor
0066     ~CMSBoostedTauSeedingAlgorithm() override {}
0067 
0068     // standard usage
0069     std::string description() const override;
0070 
0071     PseudoJet result(const PseudoJet& jet) const override;
0072 
0073     // the type of the associated structure
0074     typedef CMSBoostedTauSeedingAlgorithmStructure StructureType;
0075 
0076   protected:
0077     void dumpSubJetStructure(const fastjet::PseudoJet& jet,
0078                              int depth,
0079                              int maxDepth,
0080                              const std::string& depth_and_idx_string) const;
0081     std::pair<PseudoJet, PseudoJet> findSubjets(const PseudoJet& jet, int depth, bool& subjetsFound) const;
0082 
0083   private:
0084     double ptMin_;  ///< minimum sub-jet pt
0085     double muMin_;  ///< the min value of the mass-drop parameter
0086     double muMax_;  ///< the max value of the mass-drop parameter
0087     double yMin_;   ///< the min value of the asymmetry parameter
0088     double yMax_;   ///< the max value of the asymmetry parameter
0089     double dRMin_;  ///< the min value of the dR parameter
0090     double dRMax_;  ///< the max value of the dR parameter
0091     int maxDepth_;  ///< the max depth for descending into clustering sequence
0092 
0093     int verbosity_;  ///< flag to enable/disable debug output
0094   };
0095 
0096   //------------------------------------------------------------------------
0097   /// @ingroup tools_taggers
0098   /// \class CMSBoostedTauSeedingAlgorithmStructure
0099   /// the structure returned by the CMSBoostedTauSeedingAlgorithm transformer.
0100   ///
0101   /// See the CMSBoostedTauSeedingAlgorithm class description for the details of what
0102   /// is inside this structure
0103   ///
0104   class CMSBoostedTauSeedingAlgorithmStructure : public CompositeJetStructure {
0105   public:
0106     /// ctor with initialisation
0107     ///  \param pieces  the pieces of the created jet
0108     ///  \param rec     the recombiner from the underlying cluster sequence
0109     CMSBoostedTauSeedingAlgorithmStructure(const PseudoJet& result_jet, const JetDefinition::Recombiner* rec = nullptr)
0110         : CompositeJetStructure(result_jet.pieces(), rec), _mu(0.0), _y(0.0), _dR(0.0), _pt(0.0) {}
0111 
0112     /// returns the mass-drop ratio, pieces[0].m()/jet.m()
0113     inline double mu() const { return _mu; }
0114 
0115     /// returns the value of y = (squared kt distance) / (squared mass) for the
0116     /// splitting that triggered the mass-drop condition
0117     inline double y() const { return _y; }
0118 
0119     /// returns the value of dR
0120     inline double dR() const { return _dR; }
0121 
0122     /// returns the value of pt
0123     inline double pt() const { return _pt; }
0124 
0125     // /// returns the original jet (before tagging)
0126     //const PseudoJet& original() const { return _original_jet; }
0127 
0128   protected:
0129     double _mu;  ///< the value of the mass-drop parameter
0130     double _y;   ///< the value of the asymmetry parameter
0131     double _dR;  ///< the value of the dR parameter
0132     double _pt;  ///< the value of the pt parameter
0133     // allow the tagger to set these
0134     friend class CMSBoostedTauSeedingAlgorithm;
0135   };
0136 
0137 }  // namespace contrib
0138 
0139 FASTJET_END_NAMESPACE
0140 
0141 #endif  // __FASTJET_CONTRIB_CMSBOOSTEDTAUSEEDINGALGORITHM_HH__