ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/src/JetAnalyzer.cc
(Generate patch)

Comparing UserCode/Morgan/src/JetAnalyzer.cc (file contents):
Revision 1.1 by lethuill, Wed Nov 19 19:08:07 2008 UTC vs.
Revision 1.2 by lethuill, Mon Dec 1 15:58:05 2008 UTC

# Line 1 | Line 1
1 < #include "UserCode/Morgan/interface/JetAnalyzer.h"
1 > #include "../interface/JetAnalyzer.h"
2  
3   using namespace std;
4   using namespace reco;
5   using namespace edm;
6  
7 < JetAnalyzer::JetAnalyzer(const edm::ParameterSet& producersNames):verbosity_(0)
7 > JetAnalyzer::JetAnalyzer(const edm::ParameterSet& producersNames):verbosity_(0),useMC_(false)
8   {
9 +        dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown");
10          jetProducer_ = producersNames.getParameter<edm::InputTag>("jetProducer");
11   }
12  
13 < JetAnalyzer::JetAnalyzer(const edm::ParameterSet& producersNames, int verbosity):verbosity_(verbosity)
13 > JetAnalyzer::JetAnalyzer(const edm::ParameterSet& producersNames, int verbosity):verbosity_(verbosity),useMC_(false)
14   {
15 +        dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown");
16          jetProducer_ = producersNames.getParameter<edm::InputTag>("jetProducer");
17   }
18  
19 + JetAnalyzer::JetAnalyzer(const edm::ParameterSet& producersNames, const edm::ParameterSet& myConfig, int verbosity):verbosity_(verbosity)
20 + {
21 +        dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown");
22 +        jetProducer_ = producersNames.getParameter<edm::InputTag>("jetProducer");
23 +        useMC_ = myConfig.getParameter<bool>("doMC");
24 + }
25 +
26   JetAnalyzer::~JetAnalyzer()
27   {
28   }
29  
30 + bool Rsortrule (std::pair <double,double> p1, std::pair <double,double> p2 ) {
31 +    return p1.second<p2.second;
32 + }
33 +
34   void JetAnalyzer::Process(const edm::Event& iEvent, TClonesArray* rootJets)
35   {
36  
37 <        edm::Handle< reco::CaloJetCollection > recoJets;
38 <        iEvent.getByLabel(jetProducer_, recoJets);
39 <        if(verbosity_>1) std::cout << "   Number of jets = " << recoJets->size() << "   Label: " << jetProducer_.label() << "   Instance: " << jetProducer_.instance() << std::endl;
40 <        for (unsigned int j=0; j<recoJets->size(); j++)
37 >  edm::Handle< vector< pat::Jet > > recoJets;
38 >  iEvent.getByLabel(jetProducer_, recoJets);
39 >  if(verbosity_>1) std::cout <<"  Number of jets = "<< recoJets->size()<< "  Label: "<<jetProducer_.label()<<"  Instance: "<<jetProducer_.instance()<<std::endl;
40 >  for (unsigned int j=0; j<recoJets->size(); j++)
41 >    {
42 >      TRootJet localJet(TLorentzVector( (*recoJets)[j].px(),(*recoJets)[j].py(),(*recoJets)[j].pz(),(*recoJets)[j].energy() ) ,
43 >                        TVector3( (*recoJets)[j].vx() ,(*recoJets)[j].vy() ,(*recoJets)[j].vz() ),
44 >                        abs((*recoJets)[j].pdgId()),
45 >                        (*recoJets)[j].charge()
46 >                        //      (*recoJets)[j].genJet()
47 >                        );
48 >      localJet.setBtag_trackCountingHighEff((*recoJets)[j].bDiscriminator("trackCountingHighEffBJetTags"));
49 >      localJet.setBtag_trackCountingHighPur((*recoJets)[j].bDiscriminator("trackCountingHighPurBJetTags"));
50 >      localJet.setBtag_jetProbability((*recoJets)[j].bDiscriminator("jetProbabilityBJetTags"));
51 >
52 >      reco::TrackRefVector tracks =  (*recoJets)[j].associatedTracks() ;
53 >      Float_t pTrackerTot = 0;
54 >      Float_t ptTrackerTot = 0;
55 >      //  Float_t eTrackerTot = 0;
56 >      Float_t pTrackerCone01 = 0;
57 >      Float_t pTrackerCone02 = 0;
58 >      Float_t pTrackerCone03 = 0;
59 >      Float_t pTrackerCone04 = 0;
60 >      Float_t pTrackerCone05 = 0;
61 >      vector < pair < Float_t , Float_t > > tracksVPair ;
62 >      pair < Float_t , Float_t > tracksPair;
63 >      for(unsigned int iTracks = 0; iTracks< (*recoJets)[j].associatedTracks().size() ; iTracks ++)
64          {
65 <                TRootJet localJet(
66 <                                (*recoJets)[j].px()
67 <                                ,(*recoJets)[j].py()
68 <                                ,(*recoJets)[j].pz()
69 <                                ,(*recoJets)[j].energy()
70 <                );
71 <                
72 <                Float_t anotherInterestingVariable = 999.;
73 <                localJet.setDummy(anotherInterestingVariable);
74 <                new( (*rootJets)[j] ) TRootJet(localJet);
75 <                if(verbosity_>2) cout << "   ["<< setw(3) << j << "] " << localJet << endl;
65 >          //      Float_t buzz = tracks[iTracks]->p();
66 >          pTrackerTot += tracks[iTracks]->p();
67 >          ptTrackerTot += tracks[iTracks]->pt();
68 >          tracksPair.first = tracks[iTracks]->p();
69 >          tracksPair.second = localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) ;
70 >          tracksVPair.push_back(tracksPair);
71 >          // eTrackerTot += tracks[iTracks]->energy();
72 >          if(localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) < 0.5)
73 >            {
74 >              pTrackerCone05 += tracks[iTracks]->p();
75 >              if(localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) < 0.4)
76 >                {
77 >                  pTrackerCone04 += tracks[iTracks]->p();
78 >                  if(localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) < 0.3)
79 >                    {
80 >                      pTrackerCone03 += tracks[iTracks]->p();
81 >                      if(localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) < 0.2)
82 >                        {
83 >                          pTrackerCone02 += tracks[iTracks]->p();
84 >                          if(localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)) < 0.1)
85 >                            {
86 >                              pTrackerCone01 += tracks[iTracks]->p();
87 >                            }
88 >                        }
89 >                    }
90 >                }
91 >            }
92          }
93 +      sort(tracksVPair.begin(),tracksVPair.end(), Rsortrule);
94 +      Float_t Rmin = 0;
95 +      Float_t pDummy = 0;
96 +      for(std::vector<std::pair< Float_t,Float_t > >::iterator i = tracksVPair.begin(); i !=tracksVPair.end(); i++) {
97 +        pDummy+=(*i).first;
98 +        if (pDummy>0.75*(pTrackerTot)) {
99 +          Rmin = (*i).second;
100 +          break;
101 +        }
102 +      }
103 +      if (Rmin<1e-5) {Rmin=0.;}
104 +
105 +      localJet.setBroadness(Rmin);
106 +      localJet.setBroadnessDeltaR01(pTrackerCone01/pTrackerTot);
107 +      localJet.setBroadnessDeltaR02(pTrackerCone02/pTrackerTot);
108 +      localJet.setBroadnessDeltaR03(pTrackerCone03/pTrackerTot);
109 +      localJet.setBroadnessDeltaR04(pTrackerCone04/pTrackerTot);
110 +      localJet.setBroadnessDeltaR05(pTrackerCone05/pTrackerTot);
111 +      localJet.setChargedPt(ptTrackerTot);
112 +      localJet.setPartonFlavour((*recoJets)[j].partonFlavour());
113 +      localJet.setCorrB((*recoJets)[j].correctionFactor(pat::Jet::bCorrection));
114 +      localJet.setCorrC((*recoJets)[j].correctionFactor(pat::Jet::cCorrection));
115 +      localJet.setCorrUDS((*recoJets)[j].correctionFactor(pat::Jet::udsCorrection));
116 +      localJet.setCorrGlu((*recoJets)[j].correctionFactor(pat::Jet::gCorrection));
117 +      localJet.setN90((*recoJets)[j].n90());
118 +
119 +      // we still need to implemente the matching or the referencing of the MC part of the Jet see the boolean "useMC_"
120 +
121 +      if((*recoJets)[j].isCaloJet()) {
122 +        // do anything related to a CaloJet
123 +        localJet.setJetType(1);
124 +        localJet.setEcalEnergy((*recoJets)[j].emEnergyFraction());
125 +        localJet.setHcalEnergy((*recoJets)[j].energyFractionHadronic());
126 +        localJet.setChargedEnergy(pTrackerTot);
127 +        localJet.setChargedMultiplicity((*recoJets)[j].associatedTracks().size()) ;
128 +        localJet.setNeutralMultiplicity((*recoJets)[j].getCaloConstituents().size()) ;
129 +      }
130 +      if((*recoJets)[j].isPFJet()) {
131 +        // do anything related to a PFJet
132 +        localJet.setJetType(2);
133 +        localJet.setEcalEnergy((*recoJets)[j].chargedEmEnergyFraction() + (*recoJets)[j].neutralEmEnergyFraction());
134 +        localJet.setHcalEnergy((*recoJets)[j].chargedHadronEnergyFraction() + (*recoJets)[j].neutralHadronEnergyFraction());
135 +        localJet.setChargedEnergy((*recoJets)[j].chargedEmEnergy() + (*recoJets)[j].chargedHadronEnergy() + (*recoJets)[j].chargedMuEnergy() );
136 +        localJet.setChargedMultiplicity((int)(*recoJets)[j].chargedMultiplicity()) ;
137 +        localJet.setNeutralMultiplicity((int)(*recoJets)[j].neutralMultiplicity()) ;
138 +      }
139 +      // if it is neither CaloJet nor PFJet we are bad
140 +      new( (*rootJets)[j] ) TRootJet(localJet);
141 +      if(verbosity_>2) cout << "   ["<< setw(3) << j << "] " << localJet << endl;
142 +    }
143  
144   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines