File indexing completed on 2024-04-06 12:31:16
0001 #include "TopQuarkAnalysis/TopEventSelection/interface/TtFullHadSignalSel.h"
0002 #include "PhysicsTools/CandUtils/interface/EventShapeVariables.h"
0003 #include "PhysicsTools/CandUtils/interface/Thrust.h"
0004 #include "DataFormats/Math/interface/deltaR.h"
0005 #include "TLorentzVector.h"
0006 #include "TVector3.h"
0007
0008 TtFullHadSignalSel::TtFullHadSignalSel() {}
0009
0010 std::vector<math::XYZVector> makeVecForEventShape(std::vector<pat::Jet> jets,
0011 bool only6Jets = true,
0012 ROOT::Math::Boost boost = ROOT::Math::Boost(0., 0., 0.)) {
0013 std::vector<math::XYZVector> p;
0014 bool doBoost = (boost == ROOT::Math::Boost(0., 0., 0.)) ? false : true;
0015 for (std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet) {
0016 math::XYZVector Vjet;
0017 if (doBoost) {
0018 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > Ljet(jet->px(), jet->py(), jet->pz(), jet->energy());
0019 Vjet = math::XYZVector(boost(Ljet).Px(), boost(Ljet).Py(), boost(Ljet).Pz());
0020 } else
0021 Vjet = math::XYZVector(jet->px(), jet->py(), jet->pz());
0022 p.push_back(Vjet);
0023 if (only6Jets && jet - jets.begin() == 5)
0024 break;
0025 }
0026 return p;
0027 }
0028
0029 TtFullHadSignalSel::TtFullHadSignalSel(const std::vector<pat::Jet>& jets) {
0030 H_ = -1.;
0031 Ht_ = -1.;
0032 Ht123_ = -1.;
0033 Ht3jet_ = -1.;
0034 Et56_ = -1.;
0035 sqrt_s_ = -1.;
0036 M3_ = -1.;
0037
0038 TCHE_Bjets_ = 0.;
0039 TCHP_Bjets_ = 0.;
0040 SSVHE_Bjets_ = 0.;
0041 SSVHP_Bjets_ = 0.;
0042 CSV_Bjets_ = 0.;
0043 CSVMVA_Bjets_ = 0.;
0044 SM_Bjets_ = 0.;
0045
0046 jets_etaetaMoment_ = 0.;
0047 jets_etaphiMoment_ = 0.;
0048 jets_phiphiMoment_ = 0.;
0049
0050 jets_etaetaMomentLogEt_ = 0.;
0051 jets_etaphiMomentLogEt_ = 0.;
0052 jets_phiphiMomentLogEt_ = 0.;
0053
0054 jets_etaetaMomentNoB_ = 0.;
0055 jets_etaphiMomentNoB_ = 0.;
0056 jets_phiphiMomentNoB_ = 0.;
0057
0058 aplanarity_ = -1.;
0059 sphericity_ = -1.;
0060 circularity_ = -1.;
0061 isotropy_ = -1.;
0062 C_ = -1.;
0063 D_ = -1.;
0064
0065 aplanarityAll_ = -1.;
0066 sphericityAll_ = -1.;
0067 circularityAll_ = -1.;
0068 isotropyAll_ = -1.;
0069 CAll_ = -1.;
0070 DAll_ = -1.;
0071
0072 aplanarityAllCMS_ = -1.;
0073 sphericityAllCMS_ = -1.;
0074 circularityAllCMS_ = -1.;
0075 isotropyAllCMS_ = -1.;
0076 CAllCMS_ = -1.;
0077 DAllCMS_ = -1.;
0078
0079 thrust_ = -1.;
0080 thrustCMS_ = -1.;
0081
0082 TCHE_BJet_Discs_ = std::vector<double>(0);
0083 TCHP_BJet_Discs_ = std::vector<double>(0);
0084 SSVHE_BJet_Discs_ = std::vector<double>(0);
0085 SSVHP_BJet_Discs_ = std::vector<double>(0);
0086 CSV_BJet_Discs_ = std::vector<double>(0);
0087 CSVMVA_BJet_Discs_ = std::vector<double>(0);
0088 SM_BJet_Discs_ = std::vector<double>(0);
0089
0090 pts_ = std::vector<double>(0);
0091 EtSin2Thetas_ = std::vector<double>(0);
0092 thetas_ = std::vector<double>(0);
0093 thetaStars_ = std::vector<double>(0);
0094 EtStars_ = std::vector<double>(0);
0095
0096 EtSin2Theta3jet_ = 0.;
0097 theta3jet_ = 0.;
0098 thetaStar3jet_ = 0.;
0099 sinTheta3jet_ = 0.;
0100 sinThetaStar3jet_ = 0.;
0101 EtStar3jet_ = 0.;
0102
0103 etaetaMoments_ = std::vector<double>(0);
0104 etaphiMoments_ = std::vector<double>(0);
0105 phiphiMoments_ = std::vector<double>(0);
0106
0107 etaetaMomentsLogEt_ = std::vector<double>(0);
0108 etaphiMomentsLogEt_ = std::vector<double>(0);
0109 phiphiMomentsLogEt_ = std::vector<double>(0);
0110
0111 etaetaMomentsMoment_ = std::vector<double>(0);
0112 etaphiMomentsMoment_ = std::vector<double>(0);
0113 phiphiMomentsMoment_ = std::vector<double>(0);
0114
0115 etaetaMomentsMomentLogEt_ = std::vector<double>(0);
0116 etaphiMomentsMomentLogEt_ = std::vector<double>(0);
0117 phiphiMomentsMomentLogEt_ = std::vector<double>(0);
0118
0119 etaetaMomentsNoB_ = std::vector<double>(0);
0120 etaphiMomentsNoB_ = std::vector<double>(0);
0121 phiphiMomentsNoB_ = std::vector<double>(0);
0122
0123 dR_ = std::vector<double>(0);
0124 dRMass_ = std::vector<double>(0);
0125 dRAngle_ = std::vector<double>(0);
0126
0127 dR3Jets_ = std::vector<double>(0);
0128 dR3JetsMass_ = std::vector<double>(0);
0129
0130 massDiffMWCands_ = std::vector<double>(0);
0131
0132 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > totalSystem(0., 0., 0., 0.);
0133
0134 std::vector<std::pair<double, std::vector<unsigned short> > > dRs(0);
0135 std::vector<std::pair<double, std::vector<unsigned short> > > dRs3Jets(0);
0136
0137 std::vector<std::pair<double, std::vector<unsigned short> > > M3s(0);
0138
0139 std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > > fourVectors(0);
0140
0141 unsigned short nonBJets = 0;
0142 for (std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet) {
0143 H_ += jet->energy();
0144 Ht_ += jet->et();
0145
0146 if (jet - jets.begin() < 3) {
0147 Ht123_ += jet->et();
0148 }
0149 if (jet - jets.begin() == 4 || jet - jets.begin() == 5)
0150 Et56_ += jet->et();
0151
0152 if (jet - jets.begin() > 1) {
0153 Ht3jet_ += jet->et();
0154 EtSin2Theta3jet_ += jet->et() * pow(sin(jet->theta()), 2);
0155 theta3jet_ += (jet->theta() > M_PI / 2.) ? (M_PI - jet->theta()) : jet->theta();
0156 sinTheta3jet_ += sin(jet->theta());
0157 }
0158
0159 TCHE_BJet_Discs_.push_back(jet->bDiscriminator("trackCountingHighEffBJetTags"));
0160 TCHP_BJet_Discs_.push_back(jet->bDiscriminator("trackCountingHighPurBJetTags"));
0161 SSVHE_BJet_Discs_.push_back(jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags"));
0162 SSVHP_BJet_Discs_.push_back(jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags"));
0163 CSV_BJet_Discs_.push_back(jet->bDiscriminator("combinedSecondaryVertexBJetTags"));
0164 CSVMVA_BJet_Discs_.push_back(jet->bDiscriminator("combinedSecondaryVertexMVABJetTags"));
0165 SM_BJet_Discs_.push_back(jet->bDiscriminator("softMuonBJetTags"));
0166
0167 pts_.push_back(jet->pt());
0168 EtSin2Thetas_.push_back(jet->et() * pow(sin(jet->theta()), 2));
0169 thetas_.push_back((jet->theta() > M_PI / 2.) ? (M_PI - jet->theta()) : jet->theta());
0170
0171 fourVectors.push_back(jet->p4());
0172
0173 if (jet->bDiscriminator("trackCountingHighEffBJetTags") > 3.3)
0174 ++TCHE_Bjets_;
0175 if (jet->bDiscriminator("trackCountingHighPurBJetTags") > 3.41)
0176 ++TCHP_Bjets_;
0177 if (jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags") > 1.74)
0178 ++SSVHE_Bjets_;
0179 if (jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags") > 2.0)
0180 ++SSVHP_Bjets_;
0181 if (jet->bDiscriminator("combinedSecondaryVertexBJetTags") > 0.75)
0182 ++CSV_Bjets_;
0183 if (jet->bDiscriminator("combinedSecondaryVertexMVABJetTags") > 0.75)
0184 ++CSVMVA_Bjets_;
0185 if (jet->bDiscriminator("softMuonBJetTags") > 0.3)
0186 ++SM_Bjets_;
0187
0188 if (jet->nConstituents() > 0) {
0189
0190 etaetaMoments_.push_back(jet->etaetaMoment());
0191 etaphiMoments_.push_back(std::abs(jet->etaphiMoment()));
0192 phiphiMoments_.push_back(jet->phiphiMoment());
0193
0194 jets_etaetaMoment_ += jet->etaetaMoment();
0195 jets_etaphiMoment_ += std::abs(jet->etaphiMoment());
0196 jets_phiphiMoment_ += jet->phiphiMoment();
0197
0198 etaetaMomentsLogEt_.push_back(jet->etaetaMoment() * log(jet->et()));
0199 etaphiMomentsLogEt_.push_back(std::abs(jet->etaphiMoment()) * log(jet->et()));
0200 phiphiMomentsLogEt_.push_back(jet->phiphiMoment() * log(jet->et()));
0201
0202 jets_etaetaMomentLogEt_ += jet->etaetaMoment() * log(jet->et());
0203 jets_etaphiMomentLogEt_ += std::abs(jet->etaphiMoment()) * log(jet->et());
0204 jets_phiphiMomentLogEt_ += jet->phiphiMoment() * log(jet->et());
0205
0206 if (jet->bDiscriminator("trackCountingHighEffBJetTags") < 3.3 &&
0207 jet->bDiscriminator("trackCountingHighPurBJetTags") < 1.93 &&
0208 jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags") < 1.74 &&
0209 jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags") < 2.0) {
0210 ++nonBJets;
0211
0212 etaetaMomentsNoB_.push_back(jet->etaetaMoment());
0213 etaphiMomentsNoB_.push_back(std::abs(jet->etaphiMoment()));
0214 phiphiMomentsNoB_.push_back(jet->phiphiMoment());
0215
0216 jets_etaetaMomentNoB_ += jet->etaetaMoment();
0217 jets_etaphiMomentNoB_ += std::abs(jet->etaphiMoment());
0218 jets_phiphiMomentNoB_ += jet->phiphiMoment();
0219 }
0220
0221 }
0222
0223 for (std::vector<pat::Jet>::const_iterator jet2 = jet + 1; jet2 != jets.end(); ++jet2) {
0224 unsigned short comb2A[2] = {(unsigned short)(jet - jets.begin()), (unsigned short)(jet2 - jets.begin())};
0225 std::vector<unsigned short> comb2(comb2A, comb2A + sizeof(comb2A) / sizeof(unsigned short));
0226 dRs.push_back(std::make_pair(deltaR(jet->phi(), jet->eta(), jet2->phi(), jet2->eta()), comb2));
0227
0228 for (std::vector<pat::Jet>::const_iterator jet3 = jet2 + 1; jet3 != jets.end(); ++jet3) {
0229 unsigned short comb3A[3] = {(unsigned short)(jet - jets.begin()),
0230 (unsigned short)(jet2 - jets.begin()),
0231 (unsigned short)(jet3 - jets.begin())};
0232 std::vector<unsigned short> comb3(comb3A, comb3A + sizeof(comb3A) / sizeof(unsigned short));
0233 double dR1 = deltaR(jet->eta(), jet->phi(), jet2->eta(), jet2->phi());
0234 double dR2 = deltaR(jet->eta(), jet->phi(), jet3->eta(), jet3->phi());
0235 double dR3 = deltaR(jet2->eta(), jet2->phi(), jet3->eta(), jet3->phi());
0236 dRs3Jets.push_back(std::make_pair(dR1 + dR2 + dR3, comb3));
0237 M3s.push_back(std::make_pair((jet->p4() + jet2->p4() + jet3->p4()).pt(), comb3));
0238 }
0239 }
0240
0241 totalSystem += jet->p4();
0242 }
0243
0244 ROOT::Math::Boost CoMBoostTotal(totalSystem.BoostToCM());
0245 std::vector<reco::LeafCandidate> boostedJets;
0246
0247 for (std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet) {
0248 boostedJets.push_back(
0249 reco::LeafCandidate(jet->charge(), CoMBoostTotal(jet->p4()), jet->vertex(), jet->pdgId(), jet->status(), true));
0250 }
0251
0252 EtSin2Theta3jet_ /= ((double)(jets.size() - 3));
0253 theta3jet_ /= ((double)(jets.size() - 3));
0254 sinTheta3jet_ /= ((double)(jets.size() - 3));
0255
0256 jets_etaetaMoment_ /= (double)jets.size();
0257 jets_etaphiMoment_ /= (double)jets.size();
0258 jets_phiphiMoment_ /= (double)jets.size();
0259
0260 jets_etaetaMomentLogEt_ /= (double)jets.size();
0261 jets_etaphiMomentLogEt_ /= (double)jets.size();
0262 jets_phiphiMomentLogEt_ /= (double)jets.size();
0263
0264 if (nonBJets) {
0265 jets_etaetaMomentNoB_ /= (double)nonBJets;
0266 jets_etaphiMomentNoB_ /= (double)nonBJets;
0267 jets_phiphiMomentNoB_ /= (double)nonBJets;
0268 }
0269
0270 for (unsigned short i = 0; i < etaetaMoments_.size(); ++i) {
0271 etaetaMomentsMoment_.push_back(etaetaMoments_.at(i) / jets_etaetaMoment_);
0272 etaphiMomentsMoment_.push_back(etaphiMoments_.at(i) / jets_etaphiMoment_);
0273 phiphiMomentsMoment_.push_back(phiphiMoments_.at(i) / jets_phiphiMoment_);
0274
0275 etaetaMomentsMomentLogEt_.push_back(etaetaMomentsLogEt_.at(i) / jets_etaetaMomentLogEt_);
0276 etaphiMomentsMomentLogEt_.push_back(etaphiMomentsLogEt_.at(i) / jets_etaphiMomentLogEt_);
0277 phiphiMomentsMomentLogEt_.push_back(phiphiMomentsLogEt_.at(i) / jets_phiphiMomentLogEt_);
0278 }
0279
0280 std::sort(dRs.begin(), dRs.end());
0281 std::sort(dRs3Jets.begin(), dRs3Jets.end());
0282
0283 for (std::vector<std::pair<double, std::vector<unsigned short> > >::const_iterator dR = dRs.begin(); dR != dRs.end();
0284 ++dR) {
0285 dR_.push_back(dR->first);
0286 dRMass_.push_back((jets.at(dR->second.at(0)).p4() + jets.at(dR->second.at(1)).p4()).mass());
0287
0288 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > wHypo =
0289 jets.at(dR->second.at(0)).p4() + jets.at(dR->second.at(1)).p4();
0290 TLorentzVector wHypoHelper(wHypo.Px(), wHypo.Py(), wHypo.Pz(), wHypo.E());
0291 wHypoHelper.SetVectM(TVector3(wHypo.Px(), wHypo.Py(), wHypo.Pz()), 80.4);
0292 wHypo.SetPxPyPzE(wHypoHelper.Px(), wHypoHelper.Py(), wHypoHelper.Pz(), wHypoHelper.E());
0293 ROOT::Math::Boost CoMBoostWHypo(wHypo.BoostToCM());
0294 dRAngle_.push_back(ROOT::Math::VectorUtil::Angle(CoMBoostWHypo(jets.at(dR->second.at(0)).p4()),
0295 CoMBoostWHypo(jets.at(dR->second.at(1)).p4())));
0296 }
0297
0298 for (std::vector<std::pair<double, std::vector<unsigned short> > >::const_iterator dR = dRs3Jets.begin();
0299 dR != dRs3Jets.end();
0300 ++dR) {
0301 dR3Jets_.push_back(dR->first);
0302 dR3JetsMass_.push_back(
0303 (jets.at(dR->second.at(0)).p4() + jets.at(dR->second.at(1)).p4() + jets.at(dR->second.at(2)).p4()).mass());
0304 }
0305
0306 std::vector<std::pair<double, unsigned short> > massDiff2W;
0307
0308 for (std::vector<double>::const_iterator mass = dRMass_.begin(); mass != dRMass_.end(); ++mass) {
0309 massDiff2W.push_back(std::make_pair(std::abs((*mass) - 80.4), mass - dRMass_.begin()));
0310 }
0311
0312 std::sort(massDiff2W.begin(), massDiff2W.end());
0313
0314
0315
0316 for (std::vector<std::pair<double, unsigned short> >::const_iterator i = massDiff2W.begin(); i != massDiff2W.end();
0317 ++i) {
0318 unsigned int mass1 = i->second;
0319 for (std::vector<std::pair<double, unsigned short> >::const_iterator j = i + 1; j != massDiff2W.end(); ++j) {
0320 unsigned int mass2 = j->second;
0321 if (dRs.at(mass1).second.at(0) != dRs.at(mass2).second.at(0) &&
0322 dRs.at(mass1).second.at(0) != dRs.at(mass2).second.at(1) &&
0323 dRs.at(mass1).second.at(1) != dRs.at(mass2).second.at(0) &&
0324 dRs.at(mass1).second.at(1) != dRs.at(mass2).second.at(1)) {
0325
0326
0327
0328 massDiffMWCands_.push_back(std::abs(dRMass_.at(mass1) - dRMass_.at(mass2)));
0329 }
0330 }
0331 if (massDiffMWCands_.size() > 20)
0332 break;
0333 }
0334
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345 std::sort(TCHE_BJet_Discs_.begin(), TCHE_BJet_Discs_.end());
0346 std::sort(TCHP_BJet_Discs_.begin(), TCHP_BJet_Discs_.end());
0347 std::sort(SSVHE_BJet_Discs_.begin(), SSVHE_BJet_Discs_.end());
0348 std::sort(SSVHP_BJet_Discs_.begin(), SSVHP_BJet_Discs_.end());
0349 std::sort(CSV_BJet_Discs_.begin(), CSV_BJet_Discs_.end());
0350 std::sort(CSVMVA_BJet_Discs_.begin(), CSVMVA_BJet_Discs_.end());
0351 std::sort(SM_BJet_Discs_.begin(), SM_BJet_Discs_.end());
0352
0353 std::sort(etaetaMoments_.begin(), etaetaMoments_.end());
0354 std::sort(etaphiMoments_.begin(), etaphiMoments_.end());
0355 std::sort(phiphiMoments_.begin(), phiphiMoments_.end());
0356
0357 std::sort(etaetaMomentsLogEt_.begin(), etaetaMomentsLogEt_.end());
0358 std::sort(etaphiMomentsLogEt_.begin(), etaphiMomentsLogEt_.end());
0359 std::sort(phiphiMomentsLogEt_.begin(), phiphiMomentsLogEt_.end());
0360
0361 std::sort(etaetaMomentsMoment_.begin(), etaetaMomentsMoment_.end());
0362 std::sort(etaphiMomentsMoment_.begin(), etaphiMomentsMoment_.end());
0363 std::sort(phiphiMomentsMoment_.begin(), phiphiMomentsMoment_.end());
0364
0365 std::sort(etaetaMomentsMomentLogEt_.begin(), etaetaMomentsMomentLogEt_.end());
0366 std::sort(etaphiMomentsMomentLogEt_.begin(), etaphiMomentsMomentLogEt_.end());
0367 std::sort(phiphiMomentsMomentLogEt_.begin(), phiphiMomentsMomentLogEt_.end());
0368
0369 std::sort(etaetaMomentsNoB_.begin(), etaetaMomentsNoB_.end());
0370 std::sort(etaphiMomentsNoB_.begin(), etaphiMomentsNoB_.end());
0371 std::sort(phiphiMomentsNoB_.begin(), phiphiMomentsNoB_.end());
0372
0373 std::sort(M3s.begin(), M3s.end());
0374 M3_ = (jets.at((M3s.back().second.at(0))).p4() + jets.at((M3s.back().second.at(1))).p4() +
0375 jets.at((M3s.back().second.at(2))).p4())
0376 .mass();
0377
0378 sqrt_s_ = totalSystem.mass();
0379
0380 for (std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > >::const_iterator jet =
0381 fourVectors.begin();
0382 jet != fourVectors.end();
0383 ++jet) {
0384 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > boostedJet = CoMBoostTotal(*jet);
0385 if (jet - fourVectors.begin() > 1) {
0386 thetaStar3jet_ += (boostedJet.Theta() > M_PI / 2.) ? (M_PI - boostedJet.Theta()) : boostedJet.Theta();
0387 sinThetaStar3jet_ += sin(boostedJet.Theta());
0388 EtStar3jet_ += jet->Et() * pow(sin(boostedJet.Theta()), 2);
0389 }
0390 thetaStars_.push_back((boostedJet.Theta() > M_PI / 2.) ? (M_PI - boostedJet.Theta()) : boostedJet.Theta());
0391 EtStars_.push_back(jet->Et() * pow(sin(boostedJet.Theta()), 2));
0392 }
0393
0394 theta3jet_ /= (double)fourVectors.size() - 2.;
0395 sinTheta3jet_ /= (double)fourVectors.size() - 2.;
0396 thetaStar3jet_ /= (double)fourVectors.size() - 2.;
0397 sinThetaStar3jet_ /= (double)fourVectors.size() - 2.;
0398
0399 EventShapeVariables eventshape(makeVecForEventShape(jets));
0400
0401 aplanarity_ = eventshape.aplanarity();
0402 sphericity_ = eventshape.sphericity();
0403 circularity_ = eventshape.circularity();
0404 isotropy_ = eventshape.isotropy();
0405 C_ = eventshape.C();
0406 D_ = eventshape.D();
0407
0408 EventShapeVariables eventshapeAll(makeVecForEventShape(jets, false));
0409
0410 aplanarityAll_ = eventshapeAll.aplanarity();
0411 sphericityAll_ = eventshapeAll.sphericity();
0412 circularityAll_ = eventshapeAll.circularity();
0413 isotropyAll_ = eventshapeAll.isotropy();
0414 CAll_ = eventshapeAll.C();
0415 DAll_ = eventshapeAll.D();
0416
0417 EventShapeVariables eventshapeAllCMS(makeVecForEventShape(jets, false, CoMBoostTotal));
0418
0419 aplanarityAllCMS_ = eventshapeAllCMS.aplanarity();
0420 sphericityAllCMS_ = eventshapeAllCMS.sphericity();
0421 circularityAllCMS_ = eventshapeAllCMS.circularity();
0422 isotropyAllCMS_ = eventshapeAllCMS.isotropy();
0423 CAllCMS_ = eventshapeAllCMS.C();
0424 DAllCMS_ = eventshapeAllCMS.D();
0425
0426 Thrust thrustAlgo(jets.begin(), jets.end());
0427 thrust_ = thrustAlgo.thrust();
0428
0429 Thrust thrustAlgoCMS(boostedJets.begin(), boostedJets.end());
0430 thrustCMS_ = thrustAlgoCMS.thrust();
0431 }
0432
0433 TtFullHadSignalSel::~TtFullHadSignalSel() {}