ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/VHbbAnalysisCode/interface/IsolationStudyPlotSet.h
Revision: 1.1
Committed: Fri Apr 27 13:52:13 2012 UTC (13 years ago) by grimes
Content type: text/plain
Branch: MAIN
Log Message:
Added code to analyse muon isolation.

File Contents

# User Rev Content
1 grimes 1.1 #ifndef trkupgradeanalysis_IsolationStudyPlotSet_h
2     #define trkupgradeanalysis_IsolationStudyPlotSet_h
3    
4     #include <vector>
5     #include <utility> // for std::pair
6    
7     // Can't forward declare this because I need VHbbEvent::MuonInfo
8     #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEvent.h"
9    
10     #include "TrkUpgradeAnalysis/VHbb/interface/MuonInfoCollectionPlotSet.h"
11     #include "TrkUpgradeAnalysis/VHbb/interface/MuonInfoPlotSet.h"
12    
13     // Forward declarations
14     class TH1F;
15     class TDirectory;
16     class VHbbEventAuxInfo;
17    
18     namespace trkupgradeanalysis
19     {
20     /** @brief A class to take care of booking and filling histograms that study lepton isolation.
21     *
22     * @author Mark Grimes (mark.grimes@bristol.ac.uk)
23     * @date 11/Apr/2012
24     */
25     class IsolationStudyPlotSet
26     {
27     public:
28     IsolationStudyPlotSet();
29     void book( TDirectory* pDirectory );
30     void fill( const VHbbEvent& event, const VHbbEventAuxInfo* pAuxInfo );
31     private:
32     bool histogramHaveBeenBooked_;
33    
34     /** @brief Applies the same cleaning as VHbb package, apart from isolation.
35     *
36     * Code copied almost verbatim from HbbCandidateFinderAlgo::findMuons(...) in
37     * VHbbAnalysis/VHbbDataFormats/src/HbbCandidateFinderAlgo.cc, but with the line about isolation
38     * dropped. Copied from the VHbb package as it was on 12/Mar/2012.
39     */
40     std::vector<VHbbEvent::MuonInfo> cleanMuons( const std::vector<VHbbEvent::MuonInfo>& muons );
41    
42     /** @brief Returns the first muon in the collection and the next one with an opposite charge.
43     *
44     * The intention is that the collection should be sorted high to low by pT, so that this method
45     * gives the highest pT muon and the next highest with opposite charge.
46     *
47     * @throw std::runtime_error If there are fewer than two entries in the input collection, or if
48     * no oppositely charged pairs can be found.
49     */
50     std::pair<VHbbEvent::MuonInfo,VHbbEvent::MuonInfo> findOppositelyChargedPair( const std::vector<VHbbEvent::MuonInfo>& muons );
51    
52     /** @brief Returns true if the first muon in the pair is more isolated than the second.
53     *
54     * Uses normal relative isolation, i.e. the sum of the charged, photonic and neutral energy around
55     * the particle divided by the pT. The cone size where the energy is summed will have been set earlier
56     * in the configuration sequence.
57     */
58     bool firstMuonIsMoreIsolated( std::pair<VHbbEvent::MuonInfo,VHbbEvent::MuonInfo> diMuons );
59    
60     /** @brief Returns true if the first muon in the pair is more isolated than the second.
61     *
62     * Uses combined relative isolation with the delta beta correction, i.e. the sum of the charged, photonic
63     * and corrected neutral energy around the particle divided by the pT. The corrected neutral energy is
64     * the neutral energy minus half the charged pile up energy (since apparently the neutral pile up energy
65     * is approximately half the charged). If the corrected neutral energy is less than zero, the uncorrected
66     * is used (i.e. reverts to normal combined relative isolation). The cone size where the energy is summed
67     * will have been set earlier in the configuration sequence.
68     */
69     bool firstMuonIsMoreDeltaBetaCorrectedIsolated( std::pair<VHbbEvent::MuonInfo,VHbbEvent::MuonInfo> diMuons );
70    
71     // TTree* pLeastIsolatedDiMuonTree_;
72     // int numberOfPrimaryVertices_branch_; // All these are variables to hold the branch data
73     // float chargedIsolation_branch_;
74     // float photonIsolation_branch_;
75     // float neutralIsolation_branch_;
76     // float pileupIsolation_branch_;
77     // float pT_branch_;
78     trkupgradeanalysis::MuonInfoCollectionPlotSet cleanedMuons_; ///< Plots for the muons that have had cleaning applied (except isolation)
79     trkupgradeanalysis::MuonInfoPlotSet highestPtDiMuon_; ///< Plots for the muon in the pair with the highest pT
80     trkupgradeanalysis::MuonInfoPlotSet lowestPtDiMuon_;
81     trkupgradeanalysis::MuonInfoPlotSet mostIsolatedDiMuon_; ///< Plots for the muon in the pair that is most isolated
82     trkupgradeanalysis::MuonInfoPlotSet leastIsolatedDiMuon_;
83     trkupgradeanalysis::MuonInfoPlotSet leastDeltaBetaCorrectedIsolatedDiMuon_;
84     };
85    
86     } // end of namespace trkupgradeanalysis
87    
88    
89     #endif // end of "#ifndef trkupgradeanalysis_IsolationStudyPlotSet_h"