Back to home page

Project CMSSW displayed by LXR

 
 

    


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       //if( jet->daughterPtr(0).productGetter()->getIt(jet->daughterPtr(0).id()) != 0 ){
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   //std::vector<std::pair< double, std::vector<unsigned short> > > massDiff;
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         //unsigned short combA[2] = { mass1 , mass2 };
0326         //std::vector<unsigned short> comb(combA, combA + sizeof(combA) / sizeof(unsigned short));
0327         //massDiff.push_back(std::make_pair(std::abs(dRMass_.at(mass1)-dRMass_.at(mass2)), comb));
0328         massDiffMWCands_.push_back(std::abs(dRMass_.at(mass1) - dRMass_.at(mass2)));
0329       }
0330     }
0331     if (massDiffMWCands_.size() > 20)
0332       break;
0333   }
0334 
0335   //std::sort(massDiff.begin(), massDiff.end());
0336   /*
0337   for(std::vector<std::pair< double, std::vector<unsigned short> > >::const_iterator diff = massDiff.begin(); diff != massDiff.end() ; ++diff){
0338     std::cout << "| "   << dRMass_.at(diff->second.at(0)) << "(" << diff->second.at(0)
0339           << ") - " << dRMass_.at(diff->second.at(1)) << "(" << diff->second.at(1)
0340           << ") | = " << diff->first << std::endl;
0341   }
0342   std::cout << "---------------------------------------------" << std::endl;
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() {}