20 |
|
{ |
21 |
|
dataType_ = producersNames.getUntrackedParameter<string>("dataType","unknown"); |
22 |
|
jetProducer_ = producersNames.getParameter<edm::InputTag>("jetProducer"); |
23 |
< |
useMC_ = myConfig.getParameter<bool>("doMC"); |
23 |
> |
useMC_ = myConfig.getUntrackedParameter<bool>("doJetMC"); |
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; |
30 |
> |
bool Rsortrule (std::pair <double,double> p1, std::pair <double,double> p2 ) |
31 |
> |
{ |
32 |
> |
return p1.second<p2.second; |
33 |
|
} |
34 |
|
|
35 |
|
void JetAnalyzer::Process(const edm::Event& iEvent, TClonesArray* rootJets) |
36 |
|
{ |
37 |
|
|
38 |
< |
edm::Handle< vector< pat::Jet > > recoJets; |
39 |
< |
iEvent.getByLabel(jetProducer_, recoJets); |
40 |
< |
if(verbosity_>1) std::cout <<" Number of jets = "<< recoJets->size()<< " Label: "<<jetProducer_.label()<<" Instance: "<<jetProducer_.instance()<<std::endl; |
41 |
< |
for (unsigned int j=0; j<recoJets->size(); j++) |
42 |
< |
{ |
43 |
< |
TRootJet localJet(TLorentzVector( (*recoJets)[j].px(),(*recoJets)[j].py(),(*recoJets)[j].pz(),(*recoJets)[j].energy() ) , |
44 |
< |
TVector3( (*recoJets)[j].vx() ,(*recoJets)[j].vy() ,(*recoJets)[j].vz() ), |
45 |
< |
abs((*recoJets)[j].pdgId()), |
46 |
< |
(*recoJets)[j].charge() |
47 |
< |
// (*recoJets)[j].genJet() |
48 |
< |
); |
49 |
< |
localJet.setBtag_trackCountingHighEff((*recoJets)[j].bDiscriminator("trackCountingHighEffBJetTags")); |
50 |
< |
localJet.setBtag_trackCountingHighPur((*recoJets)[j].bDiscriminator("trackCountingHighPurBJetTags")); |
51 |
< |
localJet.setBtag_jetProbability((*recoJets)[j].bDiscriminator("jetProbabilityBJetTags")); |
52 |
< |
|
53 |
< |
reco::TrackRefVector tracks = (*recoJets)[j].associatedTracks() ; |
54 |
< |
Float_t pTrackerTot = 0; |
55 |
< |
Float_t ptTrackerTot = 0; |
56 |
< |
// Float_t eTrackerTot = 0; |
57 |
< |
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 ++) |
38 |
> |
unsigned int nJets=0; |
39 |
> |
|
40 |
> |
// reco::CaloJet or reco::PFJet ? |
41 |
> |
std::string jetType = "BASIC"; |
42 |
> |
if( jetProducer_.label()=="kt4CaloJets" |
43 |
> |
|| jetProducer_.label()=="kt6CaloJets" |
44 |
> |
|| jetProducer_.label()=="iterativeCone5CaloJets" |
45 |
> |
|| jetProducer_.label()=="sisCone5CaloJets" |
46 |
> |
|| jetProducer_.label()=="sisCone7CaloJets" |
47 |
> |
) jetType="CALO"; |
48 |
> |
|
49 |
> |
if( jetProducer_.label()=="kt4PFJets" |
50 |
> |
|| jetProducer_.label()=="kt6PFJets" |
51 |
> |
|| jetProducer_.label()=="iterativeCone5PFJets" |
52 |
> |
|| jetProducer_.label()=="sisCone5PFJets" |
53 |
> |
|| jetProducer_.label()=="sisCone7PFJets" |
54 |
> |
) jetType="PF"; |
55 |
> |
|
56 |
> |
edm::Handle < std::vector <reco::CaloJet> > recoCaloJets; |
57 |
> |
if( (dataType_=="RECO" || dataType_=="AOD") && jetType=="CALO" ) |
58 |
|
{ |
59 |
< |
// Float_t buzz = tracks[iTracks]->p(); |
60 |
< |
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 |
< |
} |
59 |
> |
iEvent.getByLabel(jetProducer_, recoCaloJets); |
60 |
> |
nJets = recoCaloJets->size(); |
61 |
|
} |
62 |
< |
sort(tracksVPair.begin(),tracksVPair.end(), Rsortrule); |
63 |
< |
Float_t Rmin = 0; |
64 |
< |
Float_t pDummy = 0; |
65 |
< |
for(std::vector<std::pair< Float_t,Float_t > >::iterator i = tracksVPair.begin(); i !=tracksVPair.end(); i++) { |
66 |
< |
pDummy+=(*i).first; |
67 |
< |
if (pDummy>0.75*(pTrackerTot)) { |
68 |
< |
Rmin = (*i).second; |
69 |
< |
break; |
62 |
> |
|
63 |
> |
edm::Handle < std::vector <reco::PFJet> > recoPFJets; |
64 |
> |
if( (dataType_=="RECO" || dataType_=="AOD") && jetType=="PF" ) |
65 |
> |
{ |
66 |
> |
iEvent.getByLabel(jetProducer_, recoPFJets); |
67 |
> |
nJets = recoPFJets->size(); |
68 |
> |
} |
69 |
> |
|
70 |
> |
edm::Handle < std::vector <pat::Jet> > patJets; |
71 |
> |
if( dataType_=="PAT" || dataType_=="PATAOD" ) |
72 |
> |
{ |
73 |
> |
iEvent.getByLabel(jetProducer_, patJets); |
74 |
> |
nJets = patJets->size(); |
75 |
|
} |
102 |
– |
} |
103 |
– |
if (Rmin<1e-5) {Rmin=0.;} |
76 |
|
|
77 |
< |
localJet.setBroadness(Rmin); |
78 |
< |
localJet.setBroadnessDeltaR01(pTrackerCone01/pTrackerTot); |
79 |
< |
localJet.setBroadnessDeltaR02(pTrackerCone02/pTrackerTot); |
80 |
< |
localJet.setBroadnessDeltaR03(pTrackerCone03/pTrackerTot); |
81 |
< |
localJet.setBroadnessDeltaR04(pTrackerCone04/pTrackerTot); |
82 |
< |
localJet.setBroadnessDeltaR05(pTrackerCone05/pTrackerTot); |
83 |
< |
localJet.setChargedPt(ptTrackerTot); |
84 |
< |
localJet.setPartonFlavour((*recoJets)[j].partonFlavour()); |
85 |
< |
localJet.setCorrB((*recoJets)[j].correctionFactor(pat::Jet::bCorrection)); |
86 |
< |
localJet.setCorrC((*recoJets)[j].correctionFactor(pat::Jet::cCorrection)); |
87 |
< |
localJet.setCorrUDS((*recoJets)[j].correctionFactor(pat::Jet::udsCorrection)); |
88 |
< |
localJet.setCorrGlu((*recoJets)[j].correctionFactor(pat::Jet::gCorrection)); |
89 |
< |
localJet.setN90((*recoJets)[j].n90()); |
90 |
< |
|
91 |
< |
// we still need to implemente the matching or the referencing of the MC part of the Jet see the boolean "useMC_" |
92 |
< |
|
93 |
< |
if((*recoJets)[j].isCaloJet()) { |
94 |
< |
// do anything related to a CaloJet |
95 |
< |
localJet.setJetType(1); |
96 |
< |
localJet.setEcalEnergy((*recoJets)[j].emEnergyFraction()); |
97 |
< |
localJet.setHcalEnergy((*recoJets)[j].energyFractionHadronic()); |
98 |
< |
localJet.setChargedEnergy(pTrackerTot); |
99 |
< |
localJet.setChargedMultiplicity((*recoJets)[j].associatedTracks().size()) ; |
100 |
< |
localJet.setNeutralMultiplicity((*recoJets)[j].getCaloConstituents().size()) ; |
101 |
< |
} |
102 |
< |
if((*recoJets)[j].isPFJet()) { |
103 |
< |
// do anything related to a PFJet |
104 |
< |
localJet.setJetType(2); |
105 |
< |
localJet.setEcalEnergy((*recoJets)[j].chargedEmEnergyFraction() + (*recoJets)[j].neutralEmEnergyFraction()); |
106 |
< |
localJet.setHcalEnergy((*recoJets)[j].chargedHadronEnergyFraction() + (*recoJets)[j].neutralHadronEnergyFraction()); |
107 |
< |
localJet.setChargedEnergy((*recoJets)[j].chargedEmEnergy() + (*recoJets)[j].chargedHadronEnergy() + (*recoJets)[j].chargedMuEnergy() ); |
108 |
< |
localJet.setChargedMultiplicity((int)(*recoJets)[j].chargedMultiplicity()) ; |
109 |
< |
localJet.setNeutralMultiplicity((int)(*recoJets)[j].neutralMultiplicity()) ; |
110 |
< |
} |
111 |
< |
// if it is neither CaloJet nor PFJet we are bad |
112 |
< |
new( (*rootJets)[j] ) TRootJet(localJet); |
113 |
< |
if(verbosity_>2) cout << " ["<< setw(3) << j << "] " << localJet << endl; |
114 |
< |
} |
77 |
> |
if(verbosity_>1) std::cout << " Number of jets = " << nJets << " Label: " << jetProducer_.label() << " Instance: " << jetProducer_.instance() << std::endl; |
78 |
> |
|
79 |
> |
for (unsigned int j=0; j<nJets; j++) |
80 |
> |
{ |
81 |
> |
const reco::Jet* jet = 0; |
82 |
> |
if( (dataType_=="RECO" || dataType_=="AOD") && jetType=="CALO" ) jet = (const reco::Jet*) ( & ((*recoCaloJets)[j]) ); |
83 |
> |
if( (dataType_=="RECO" || dataType_=="AOD") && jetType=="PF" ) jet = (const reco::Jet*) ( & ((*recoPFJets)[j]) ); |
84 |
> |
if( dataType_=="PAT" || dataType_=="PATAOD" ) |
85 |
> |
{ |
86 |
> |
jet = (const reco::Jet*) ( & ((*patJets)[j]) ); |
87 |
> |
if( (*patJets)[j].isCaloJet() ) jetType="CALO"; |
88 |
> |
if( (*patJets)[j].isPFJet() ) jetType="PF"; |
89 |
> |
} |
90 |
> |
|
91 |
> |
TRootJet localJet( |
92 |
> |
jet->px() |
93 |
> |
,jet->py() |
94 |
> |
,jet->pz() |
95 |
> |
,jet->energy() |
96 |
> |
,jet->vx() |
97 |
> |
,jet->vy() |
98 |
> |
,jet->vz() |
99 |
> |
,abs(jet->pdgId()) |
100 |
> |
,jet->charge() |
101 |
> |
); |
102 |
> |
|
103 |
> |
localJet.setNConstituents(jet->nConstituents()); |
104 |
> |
localJet.setN90(jet->nCarrying(0.9)); |
105 |
> |
localJet.setN60(jet->nCarrying(0.6)); |
106 |
> |
localJet.setJetArea(jet->jetArea()); |
107 |
> |
localJet.setPileupEnergy(jet->pileup()); |
108 |
> |
localJet.setMaxDistance(jet->maxDistance()); |
109 |
> |
float totalEnergy = jet->etInAnnulus(0.,999.); |
110 |
> |
if(totalEnergy!=0) |
111 |
> |
{ |
112 |
> |
localJet.setDR01EnergyFraction( jet->etInAnnulus(0.,0.1) / totalEnergy ); |
113 |
> |
localJet.setDR02EnergyFraction( jet->etInAnnulus(0.,0.2) / totalEnergy ); |
114 |
> |
localJet.setDR03EnergyFraction( jet->etInAnnulus(0.,0.3) / totalEnergy ); |
115 |
> |
localJet.setDR04EnergyFraction( jet->etInAnnulus(0.,0.4) / totalEnergy ); |
116 |
> |
localJet.setDR05EnergyFraction( jet->etInAnnulus(0.,0.5) / totalEnergy ); |
117 |
> |
} |
118 |
> |
|
119 |
> |
|
120 |
> |
if( dataType_=="RECO" || dataType_=="AOD" ) |
121 |
> |
{ |
122 |
> |
// Some specific methods to reco::Jet |
123 |
> |
// Do association to genParticle ? |
124 |
> |
|
125 |
> |
if( jetType=="CALO" ) |
126 |
> |
{ |
127 |
> |
// Variables from reco::CaloJet |
128 |
> |
const reco::CaloJet *caloJet = dynamic_cast<const reco::CaloJet*>(&*jet); |
129 |
> |
localJet.setJetType(1); |
130 |
> |
localJet.setEcalEnergyFraction(caloJet->emEnergyFraction()); |
131 |
> |
localJet.setHcalEnergyFraction(caloJet->energyFractionHadronic()); |
132 |
> |
//std::vector<CaloTowerPtr> getCaloConstituents () const; |
133 |
> |
} |
134 |
> |
|
135 |
> |
if( jetType=="PF" ) |
136 |
> |
{ |
137 |
> |
// Variables from reco::PFJet |
138 |
> |
const reco::PFJet *pfJet = dynamic_cast<const reco::PFJet*>(&*jet); |
139 |
> |
localJet.setJetType(2); |
140 |
> |
localJet.setEcalEnergyFraction(pfJet->chargedEmEnergyFraction() + pfJet->neutralEmEnergyFraction()); |
141 |
> |
localJet.setHcalEnergyFraction(pfJet->chargedHadronEnergyFraction() + pfJet->neutralHadronEnergyFraction()); |
142 |
> |
if(pfJet->energy() != 0) localJet.setChargedEnergyFraction( (pfJet->chargedEmEnergy() + pfJet->chargedHadronEnergy() + pfJet->chargedMuEnergy() ) / pfJet->energy()); |
143 |
> |
localJet.setChargedMultiplicity((int)pfJet->chargedMultiplicity()) ; |
144 |
> |
//std::vector <const reco::PFCandidate*> getPFConstituents () const; |
145 |
> |
} |
146 |
> |
|
147 |
> |
} |
148 |
> |
|
149 |
> |
|
150 |
> |
if( dataType_=="PATAOD" || dataType_=="PAT" ) |
151 |
> |
{ |
152 |
> |
// Some specific methods to pat::Jet |
153 |
> |
const pat::Jet *patJet = dynamic_cast<const pat::Jet*>(&*jet); |
154 |
> |
|
155 |
> |
// Variables from pat::Jet (Basic) |
156 |
> |
localJet.setBtag_trackCountingHighEff(patJet->bDiscriminator("trackCountingHighEffBJetTags")); |
157 |
> |
localJet.setBtag_trackCountingHighPur(patJet->bDiscriminator("trackCountingHighPurBJetTags")); |
158 |
> |
localJet.setBtag_jetProbability(patJet->bDiscriminator("jetProbabilityBJetTags")); |
159 |
> |
localJet.setBCorrection(patJet->correctionFactor(pat::Jet::bCorrection)); |
160 |
> |
localJet.setCCorrection(patJet->correctionFactor(pat::Jet::cCorrection)); |
161 |
> |
localJet.setUDSCorrection(patJet->correctionFactor(pat::Jet::udsCorrection)); |
162 |
> |
localJet.setGCorrection(patJet->correctionFactor(pat::Jet::gCorrection)); |
163 |
> |
|
164 |
> |
// Use associated tracks to calculate charged broadness of the jet |
165 |
> |
// FIXME - Check generalTracks collection is present |
166 |
> |
reco::TrackRefVector tracks = patJet->associatedTracks() ; |
167 |
> |
Float_t deltaR = 0.; |
168 |
> |
Float_t pTrackerTot = 0.; |
169 |
> |
Float_t pTrackerCone01 = 0.; |
170 |
> |
Float_t pTrackerCone02 = 0.; |
171 |
> |
Float_t pTrackerCone03 = 0.; |
172 |
> |
Float_t pTrackerCone04 = 0.; |
173 |
> |
Float_t pTrackerCone05 = 0.; |
174 |
> |
// TODO - Use std::map.... |
175 |
> |
vector < pair < Float_t , Float_t > > tracksVPair ; |
176 |
> |
pair < Float_t , Float_t > tracksPair; |
177 |
> |
|
178 |
> |
for(unsigned int iTracks = 0; iTracks< patJet->associatedTracks().size() ; iTracks++) |
179 |
> |
{ |
180 |
> |
deltaR = localJet.DeltaR(TLorentzVector(tracks[iTracks]->px(),tracks[iTracks]->py(),tracks[iTracks]->pz(),0)); |
181 |
> |
pTrackerTot += tracks[iTracks]->p(); |
182 |
> |
tracksPair.first = tracks[iTracks]->p(); |
183 |
> |
tracksPair.second = deltaR; |
184 |
> |
tracksVPair.push_back(tracksPair); |
185 |
> |
if(deltaR < 0.5) pTrackerCone05 += tracks[iTracks]->p(); |
186 |
> |
if(deltaR < 0.4) pTrackerCone04 += tracks[iTracks]->p(); |
187 |
> |
if(deltaR < 0.3) pTrackerCone03 += tracks[iTracks]->p(); |
188 |
> |
if(deltaR < 0.2) pTrackerCone02 += tracks[iTracks]->p(); |
189 |
> |
if(deltaR < 0.1) pTrackerCone01 += tracks[iTracks]->p(); |
190 |
> |
} |
191 |
> |
sort(tracksVPair.begin(), tracksVPair.end(), Rsortrule); |
192 |
> |
Float_t Rmin = 0; |
193 |
> |
Float_t pDummy = 0; |
194 |
> |
for(std::vector<std::pair< Float_t,Float_t > >::iterator i = tracksVPair.begin(); i!=tracksVPair.end(); i++) |
195 |
> |
{ |
196 |
> |
pDummy+=(*i).first; |
197 |
> |
if (pDummy>0.75*(pTrackerTot)) |
198 |
> |
{ |
199 |
> |
Rmin = (*i).second; |
200 |
> |
break; |
201 |
> |
} |
202 |
> |
} |
203 |
> |
if (Rmin<1e-5) {Rmin=0.;} |
204 |
> |
localJet.setChargedBroadness(Rmin); |
205 |
> |
if(pTrackerTot !=0) |
206 |
> |
{ |
207 |
> |
localJet.setChargedBroadnessDR01(pTrackerCone01/pTrackerTot); |
208 |
> |
localJet.setChargedBroadnessDR02(pTrackerCone02/pTrackerTot); |
209 |
> |
localJet.setChargedBroadnessDR03(pTrackerCone03/pTrackerTot); |
210 |
> |
localJet.setChargedBroadnessDR04(pTrackerCone04/pTrackerTot); |
211 |
> |
localJet.setChargedBroadnessDR05(pTrackerCone05/pTrackerTot); |
212 |
> |
} |
213 |
> |
|
214 |
> |
|
215 |
> |
if ( patJet->isCaloJet() ) { |
216 |
> |
// Variables from pat::Jet (CaloSpecific) |
217 |
> |
localJet.setJetType(1); |
218 |
> |
localJet.setEcalEnergyFraction(patJet->emEnergyFraction()); |
219 |
> |
localJet.setHcalEnergyFraction(patJet->energyFractionHadronic()); |
220 |
> |
localJet.setChargedMultiplicity(patJet->associatedTracks().size()) ; |
221 |
> |
//std::vector<CaloTowerPtr> getCaloConstituents () const; |
222 |
> |
} |
223 |
> |
|
224 |
> |
if(patJet->isPFJet()) { |
225 |
> |
// Variables from pat::Jet (PFSpecific) |
226 |
> |
localJet.setJetType(2); |
227 |
> |
localJet.setEcalEnergyFraction(patJet->chargedEmEnergyFraction() + patJet->neutralEmEnergyFraction()); |
228 |
> |
localJet.setHcalEnergyFraction(patJet->chargedHadronEnergyFraction() + patJet->neutralHadronEnergyFraction()); |
229 |
> |
if(patJet->energy() != 0) localJet.setChargedEnergyFraction( (patJet->chargedEmEnergy() + patJet->chargedHadronEnergy() + patJet->chargedMuEnergy() ) / patJet->energy()); |
230 |
> |
localJet.setChargedMultiplicity((int)patJet->chargedMultiplicity()) ; |
231 |
> |
//std::vector <const reco::PFCandidate*> getPFConstituents () const; |
232 |
> |
} |
233 |
> |
|
234 |
> |
// Matched genParticle |
235 |
> |
if (useMC_) |
236 |
> |
{ |
237 |
> |
// MC truth associator index |
238 |
> |
if ((patJet->genParticleRef()).isNonnull()) { |
239 |
> |
localJet.setGenParticleIndex((patJet->genParticleRef()).index()); |
240 |
> |
} else { |
241 |
> |
localJet.setGenParticleIndex(-1); |
242 |
> |
} |
243 |
> |
|
244 |
> |
// Matched generated parton |
245 |
> |
if ( patJet->genParton() != NULL ) |
246 |
> |
{ |
247 |
> |
localJet.setMomentumMCParton(TLorentzVector(patJet->genParton()->px(),patJet->genParton()->py(),patJet->genParton()->pz(),patJet->genParton()->energy())); |
248 |
> |
localJet.setVertexMCParton(TVector3(patJet->genParton()->vx(),patJet->genParton()->vy(),patJet->genParton()->vz() ) ); |
249 |
> |
localJet.setPdgIdMCParton(patJet->genParton()->pdgId()); |
250 |
> |
} |
251 |
> |
|
252 |
> |
// Matched generated jet |
253 |
> |
if ( patJet->genJet() != NULL ) |
254 |
> |
{ |
255 |
> |
localJet.setMomentumMCJet(TLorentzVector(patJet->genJet()->px(),patJet->genJet()->py(),patJet->genJet()->pz(),patJet->genJet()->energy())); |
256 |
> |
localJet.setVertexMCJet(TVector3(patJet->genJet()->vx(),patJet->genJet()->vy(),patJet->genJet()->vz() )); |
257 |
> |
localJet.setPdgIdMCJet(patJet->genJet()->pdgId()); |
258 |
> |
} |
259 |
> |
} |
260 |
> |
} |
261 |
|
|
262 |
+ |
new( (*rootJets)[j] ) TRootJet(localJet); |
263 |
+ |
if(verbosity_>2) cout << " ["<< setw(3) << j << "] " << localJet << endl; |
264 |
+ |
} |
265 |
|
} |