CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/TopQuarkAnalysis/TopEventSelection/src/TtFullHadSignalSel.cc

Go to the documentation of this file.
00001 #include "TopQuarkAnalysis/TopEventSelection/interface/TtFullHadSignalSel.h"
00002 #include "PhysicsTools/CandUtils/interface/EventShapeVariables.h"
00003 #include "PhysicsTools/CandUtils/interface/Thrust.h"
00004 #include "DataFormats/Math/interface/deltaR.h"
00005 #include "TLorentzVector.h"
00006 #include "TVector3.h"
00007 
00008 TtFullHadSignalSel::TtFullHadSignalSel()
00009 {
00010 }
00011 
00012 std::vector<math::XYZVector> makeVecForEventShape(std::vector<pat::Jet> jets, bool only6Jets = true, ROOT::Math::Boost boost = ROOT::Math::Boost(0.,0.,0.)) {
00013   std::vector<math::XYZVector> p;
00014   bool doBoost = (boost == ROOT::Math::Boost(0.,0.,0.)) ? false : true;
00015   for(std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet){
00016     math::XYZVector Vjet;
00017     if(doBoost){
00018       ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > Ljet(jet->px(), jet->py(), jet->pz(), jet->energy());
00019       Vjet = math::XYZVector(boost(Ljet).Px(), boost(Ljet).Py(), boost(Ljet).Pz());
00020     }
00021     else
00022       Vjet = math::XYZVector(jet->px(), jet->py(), jet->pz());
00023     p.push_back(Vjet);
00024     if(only6Jets && jet-jets.begin()==5) break;
00025   }
00026   return p;
00027 }
00028 
00029 TtFullHadSignalSel::TtFullHadSignalSel(const std::vector<pat::Jet>& jets)
00030 {
00031 
00032   H_      = -1.;
00033   Ht_     = -1.;
00034   Ht123_  = -1.;
00035   Ht3jet_ = -1.;
00036   Et56_   = -1.;
00037   sqrt_s_ = -1.;
00038   M3_     = -1.;
00039   
00040   TCHE_Bjets_   = 0.;
00041   TCHP_Bjets_   = 0.;
00042   SSVHE_Bjets_  = 0.;
00043   SSVHP_Bjets_  = 0.;
00044   CSV_Bjets_    = 0.;
00045   CSVMVA_Bjets_ = 0.;
00046   SM_Bjets_     = 0.;
00047 
00048   jets_etaetaMoment_ = 0.;
00049   jets_etaphiMoment_ = 0.;
00050   jets_phiphiMoment_ = 0.;
00051 
00052   jets_etaetaMomentLogEt_ = 0.;
00053   jets_etaphiMomentLogEt_ = 0.;
00054   jets_phiphiMomentLogEt_ = 0.;
00055 
00056   jets_etaetaMomentNoB_ = 0.;
00057   jets_etaphiMomentNoB_ = 0.;
00058   jets_phiphiMomentNoB_ = 0.;
00059 
00060   aplanarity_  = -1.;
00061   sphericity_  = -1.;
00062   circularity_ = -1.;
00063   isotropy_ = -1.;
00064   C_ = -1.;
00065   D_ = -1.;
00066 
00067   aplanarityAll_  = -1.;
00068   sphericityAll_  = -1.;
00069   circularityAll_ = -1.;
00070   isotropyAll_ = -1.;
00071   CAll_ = -1.;
00072   DAll_ = -1.;
00073 
00074   aplanarityAllCMS_  = -1.;
00075   sphericityAllCMS_  = -1.;
00076   circularityAllCMS_ = -1.;
00077   isotropyAllCMS_ = -1.;
00078   CAllCMS_ = -1.;
00079   DAllCMS_ = -1.;
00080 
00081   thrust_ = -1.;
00082   thrustCMS_ = -1.;
00083 
00084   TCHE_BJet_Discs_   = std::vector<double>(0);
00085   TCHP_BJet_Discs_   = std::vector<double>(0);
00086   SSVHE_BJet_Discs_  = std::vector<double>(0);
00087   SSVHP_BJet_Discs_  = std::vector<double>(0);
00088   CSV_BJet_Discs_    = std::vector<double>(0);
00089   CSVMVA_BJet_Discs_ = std::vector<double>(0);
00090   SM_BJet_Discs_     = std::vector<double>(0);
00091 
00092   pts_               = std::vector<double>(0);
00093   EtSin2Thetas_      = std::vector<double>(0);
00094   thetas_            = std::vector<double>(0);
00095   thetaStars_        = std::vector<double>(0);
00096   EtStars_           = std::vector<double>(0);
00097 
00098   EtSin2Theta3jet_  = 0.;
00099   theta3jet_        = 0.;
00100   thetaStar3jet_    = 0.;
00101   sinTheta3jet_     = 0.;
00102   sinThetaStar3jet_ = 0.;
00103   EtStar3jet_       = 0.;
00104 
00105   etaetaMoments_ = std::vector<double>(0);
00106   etaphiMoments_ = std::vector<double>(0);
00107   phiphiMoments_ = std::vector<double>(0);
00108  
00109   etaetaMomentsLogEt_ = std::vector<double>(0);
00110   etaphiMomentsLogEt_ = std::vector<double>(0);
00111   phiphiMomentsLogEt_ = std::vector<double>(0);
00112  
00113   etaetaMomentsMoment_ = std::vector<double>(0);
00114   etaphiMomentsMoment_ = std::vector<double>(0);
00115   phiphiMomentsMoment_ = std::vector<double>(0);
00116  
00117   etaetaMomentsMomentLogEt_ = std::vector<double>(0);
00118   etaphiMomentsMomentLogEt_ = std::vector<double>(0);
00119   phiphiMomentsMomentLogEt_ = std::vector<double>(0);
00120  
00121   etaetaMomentsNoB_ = std::vector<double>(0);
00122   etaphiMomentsNoB_ = std::vector<double>(0);
00123   phiphiMomentsNoB_ = std::vector<double>(0);
00124  
00125   dR_      = std::vector<double>(0);
00126   dRMass_  = std::vector<double>(0);
00127   dRAngle_ = std::vector<double>(0);
00128 
00129   dR3Jets_     = std::vector<double>(0);
00130   dR3JetsMass_ = std::vector<double>(0);
00131 
00132   massDiffMWCands_ = std::vector<double>(0);
00133 
00134   ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > totalSystem(0.,0.,0.,0.);
00135 
00136   std::vector< std::pair< double, std::vector<unsigned short> > > dRs(0);
00137   std::vector< std::pair< double, std::vector<unsigned short> > > dRs3Jets(0);
00138 
00139   std::vector< std::pair< double, std::vector<unsigned short> > > M3s(0);
00140 
00141   std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > > fourVectors(0);
00142 
00143   unsigned short nonBJets = 0;
00144   for(std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet){
00145 
00146     H_      += jet->energy();
00147     Ht_     += jet->et();
00148 
00149     if(jet - jets.begin() < 3){
00150       Ht123_  += jet->et();
00151     }
00152     if(jet - jets.begin() == 4 || jet - jets.begin() == 5)
00153       Et56_ += jet->et();
00154 
00155     if(jet - jets.begin() > 1){
00156       Ht3jet_ += jet->et();
00157       EtSin2Theta3jet_ += jet->et()*pow(sin(jet->theta()),2);
00158       theta3jet_ += (jet->theta() > M_PI/2.)? (M_PI - jet->theta()) : jet->theta();
00159       sinTheta3jet_ += sin(jet->theta());
00160     }
00161 
00162     TCHE_BJet_Discs_  .push_back( jet->bDiscriminator("trackCountingHighEffBJetTags")         );
00163     TCHP_BJet_Discs_  .push_back( jet->bDiscriminator("trackCountingHighPurBJetTags")         );
00164     SSVHE_BJet_Discs_ .push_back( jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags") );
00165     SSVHP_BJet_Discs_ .push_back( jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags") );
00166     CSV_BJet_Discs_   .push_back( jet->bDiscriminator("combinedSecondaryVertexBJetTags")      );
00167     CSVMVA_BJet_Discs_.push_back( jet->bDiscriminator("combinedSecondaryVertexMVABJetTags")   );
00168     SM_BJet_Discs_    .push_back( jet->bDiscriminator("softMuonBJetTags")                     );
00169     
00170     pts_         .push_back(jet->pt());
00171     EtSin2Thetas_.push_back(jet->et()*pow(sin(jet->theta()),2));
00172     thetas_      .push_back( (jet->theta() > M_PI/2.)? (M_PI - jet->theta()) : jet->theta() );
00173 
00174     fourVectors.push_back(jet->p4());
00175 
00176     if(jet->bDiscriminator("trackCountingHighEffBJetTags")         > 3.3  ) ++TCHE_Bjets_;
00177     if(jet->bDiscriminator("trackCountingHighPurBJetTags")         > 3.41 ) ++TCHP_Bjets_;
00178     if(jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags") > 1.74 ) ++SSVHE_Bjets_;
00179     if(jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags") > 2.0  ) ++SSVHP_Bjets_;
00180     if(jet->bDiscriminator("combinedSecondaryVertexBJetTags")      > 0.75 ) ++CSV_Bjets_;
00181     if(jet->bDiscriminator("combinedSecondaryVertexMVABJetTags")   > 0.75 ) ++CSVMVA_Bjets_;
00182     if(jet->bDiscriminator("softMuonBJetTags")                     > 0.3  ) ++SM_Bjets_;
00183     
00184     if(jet->nConstituents() > 0){
00185       //if( jet->daughterPtr(0).productGetter()->getIt(jet->daughterPtr(0).id()) != 0 ){
00186         etaetaMoments_.push_back(         jet->etaetaMoment() );
00187         etaphiMoments_.push_back(std::abs(jet->etaphiMoment()));
00188         phiphiMoments_.push_back(         jet->phiphiMoment() );
00189         
00190         jets_etaetaMoment_ +=          jet->etaetaMoment();
00191         jets_etaphiMoment_ += std::abs(jet->etaphiMoment());
00192         jets_phiphiMoment_ +=          jet->phiphiMoment();
00193 
00194         etaetaMomentsLogEt_.push_back(         jet->etaetaMoment() *log(jet->et()));
00195         etaphiMomentsLogEt_.push_back(std::abs(jet->etaphiMoment())*log(jet->et()));
00196         phiphiMomentsLogEt_.push_back(         jet->phiphiMoment() *log(jet->et()));
00197 
00198         jets_etaetaMomentLogEt_ +=          jet->etaetaMoment() *log(jet->et());
00199         jets_etaphiMomentLogEt_ += std::abs(jet->etaphiMoment())*log(jet->et());
00200         jets_phiphiMomentLogEt_ +=          jet->phiphiMoment() *log(jet->et());
00201  
00202         if(jet->bDiscriminator("trackCountingHighEffBJetTags")         < 3.3  && jet->bDiscriminator("trackCountingHighPurBJetTags")         < 1.93 &&
00203            jet->bDiscriminator("simpleSecondaryVertexHighEffBJetTags") < 1.74 && jet->bDiscriminator("simpleSecondaryVertexHighPurBJetTags") < 2.0  ){
00204 
00205           ++nonBJets;
00206 
00207           etaetaMomentsNoB_.push_back(         jet->etaetaMoment() );
00208           etaphiMomentsNoB_.push_back(std::abs(jet->etaphiMoment()));
00209           phiphiMomentsNoB_.push_back(         jet->phiphiMoment() );
00210           
00211           jets_etaetaMomentNoB_ +=          jet->etaetaMoment();
00212           jets_etaphiMomentNoB_ += std::abs(jet->etaphiMoment());
00213           jets_phiphiMomentNoB_ +=          jet->phiphiMoment();
00214         }
00215         //}
00216     }
00217 
00218     for(std::vector<pat::Jet>::const_iterator jet2 = jet+1; jet2 != jets.end(); ++jet2){
00219       unsigned short comb2A[2] = { (unsigned short)(jet-jets.begin()) , (unsigned short)(jet2-jets.begin()) };
00220       std::vector<unsigned short> comb2(comb2A, comb2A + sizeof(comb2A) / sizeof(unsigned short));
00221       dRs.push_back( std::make_pair( deltaR( jet->phi(), jet->eta(), jet2->phi(), jet2->eta() ), comb2 ) );
00222 
00223       for(std::vector<pat::Jet>::const_iterator jet3 = jet2+1; jet3 != jets.end(); ++jet3){
00224         unsigned short comb3A[3] = { (unsigned short)(jet-jets.begin()) , (unsigned short)(jet2-jets.begin()) , (unsigned short)(jet3-jets.begin()) };
00225         std::vector<unsigned short> comb3(comb3A, comb3A + sizeof(comb3A) / sizeof(unsigned short));
00226         double dR1 = deltaR( jet ->eta(), jet ->phi(), jet2->eta(), jet2->phi() );
00227         double dR2 = deltaR( jet ->eta(), jet ->phi(), jet3->eta(), jet3->phi() );
00228         double dR3 = deltaR( jet2->eta(), jet2->phi(), jet3->eta(), jet3->phi() );
00229         dRs3Jets.push_back( std::make_pair( dR1+dR2+dR3, comb3 ) );
00230         M3s.push_back( std::make_pair( ( jet->p4() + jet2->p4() + jet3->p4() ).pt(), comb3 ) );
00231       }
00232     }
00233 
00234     totalSystem += jet->p4();
00235   }
00236 
00237   ROOT::Math::Boost CoMBoostTotal(totalSystem.BoostToCM());
00238   std::vector<reco::LeafCandidate> boostedJets;
00239 
00240   for(std::vector<pat::Jet>::const_iterator jet = jets.begin(); jet != jets.end(); ++jet){
00241     boostedJets.push_back(reco::LeafCandidate(jet->charge(), CoMBoostTotal(jet->p4()), jet->vertex(), jet->pdgId(), jet->status(), true));
00242   }
00243 
00244   EtSin2Theta3jet_ /= ((double)(jets.size()-3));
00245   theta3jet_       /= ((double)(jets.size()-3));
00246   sinTheta3jet_    /= ((double)(jets.size()-3));
00247 
00248   jets_etaetaMoment_ /= (double)jets.size();
00249   jets_etaphiMoment_ /= (double)jets.size();
00250   jets_phiphiMoment_ /= (double)jets.size();
00251 
00252   jets_etaetaMomentLogEt_ /= (double)jets.size();
00253   jets_etaphiMomentLogEt_ /= (double)jets.size();
00254   jets_phiphiMomentLogEt_ /= (double)jets.size();
00255 
00256   if(nonBJets){
00257     jets_etaetaMomentNoB_ /= (double)nonBJets;
00258     jets_etaphiMomentNoB_ /= (double)nonBJets;
00259     jets_phiphiMomentNoB_ /= (double)nonBJets;
00260   }
00261 
00262   for(unsigned short i = 0 ; i < etaetaMoments_.size() ; ++i){
00263     etaetaMomentsMoment_.push_back(etaetaMoments_.at(i)/jets_etaetaMoment_);
00264     etaphiMomentsMoment_.push_back(etaphiMoments_.at(i)/jets_etaphiMoment_);
00265     phiphiMomentsMoment_.push_back(phiphiMoments_.at(i)/jets_phiphiMoment_);
00266 
00267     etaetaMomentsMomentLogEt_.push_back(etaetaMomentsLogEt_.at(i)/jets_etaetaMomentLogEt_);
00268     etaphiMomentsMomentLogEt_.push_back(etaphiMomentsLogEt_.at(i)/jets_etaphiMomentLogEt_);
00269     phiphiMomentsMomentLogEt_.push_back(phiphiMomentsLogEt_.at(i)/jets_phiphiMomentLogEt_);
00270   }
00271 
00272   std::sort(dRs     .begin(), dRs     .end());
00273   std::sort(dRs3Jets.begin(), dRs3Jets.end());
00274   
00275   for(std::vector< std::pair< double, std::vector<unsigned short> > >::const_iterator dR = dRs.begin(); dR != dRs.end(); ++dR){
00276     dR_.push_back(dR->first);
00277     dRMass_.push_back((jets.at(dR->second.at(0)).p4()+jets.at(dR->second.at(1)).p4()).mass());
00278 
00279     ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > wHypo = jets.at(dR->second.at(0)).p4()+jets.at(dR->second.at(1)).p4();
00280     TLorentzVector wHypoHelper(wHypo.Px(), wHypo.Py(), wHypo.Pz(), wHypo.E());
00281     wHypoHelper.SetVectM(TVector3(wHypo.Px(), wHypo.Py(), wHypo.Pz()), 80.4);
00282     wHypo.SetPxPyPzE(wHypoHelper.Px(), wHypoHelper.Py(), wHypoHelper.Pz(), wHypoHelper.E());
00283     ROOT::Math::Boost CoMBoostWHypo(wHypo.BoostToCM());
00284     dRAngle_.push_back(ROOT::Math::VectorUtil::Angle(CoMBoostWHypo(jets.at(dR->second.at(0)).p4()), CoMBoostWHypo(jets.at(dR->second.at(1)).p4())));
00285   }
00286 
00287   for(std::vector< std::pair< double, std::vector<unsigned short> > >::const_iterator dR = dRs3Jets.begin(); dR != dRs3Jets.end(); ++dR){
00288     dR3Jets_.push_back(dR->first);
00289     dR3JetsMass_.push_back((jets.at(dR->second.at(0)).p4()+jets.at(dR->second.at(1)).p4()+jets.at(dR->second.at(2)).p4()).mass());
00290   }
00291 
00292   std::vector< std::pair< double, unsigned short > > massDiff2W;
00293 
00294   for(std::vector< double >::const_iterator mass = dRMass_.begin(); mass != dRMass_.end(); ++mass){
00295     massDiff2W.push_back(std::make_pair(std::abs((*mass)-80.4), mass - dRMass_.begin()));
00296   }
00297 
00298   std::sort(massDiff2W.begin(), massDiff2W.end());
00299   
00300   //std::vector<std::pair< double, std::vector<unsigned short> > > massDiff;
00301 
00302   for(std::vector< std::pair< double, unsigned short > >::const_iterator i = massDiff2W.begin(); i != massDiff2W.end(); ++i){
00303     unsigned int mass1 = i->second;
00304     for(std::vector< std::pair< double, unsigned short > >::const_iterator j = i + 1; j != massDiff2W.end(); ++j){
00305       unsigned int mass2 = j->second;
00306       if(dRs.at(mass1).second.at(0) != dRs.at(mass2).second.at(0) && dRs.at(mass1).second.at(0) != dRs.at(mass2).second.at(1) &&
00307          dRs.at(mass1).second.at(1) != dRs.at(mass2).second.at(0) && dRs.at(mass1).second.at(1) != dRs.at(mass2).second.at(1)){
00308         //unsigned short combA[2] = { mass1 , mass2 };
00309         //std::vector<unsigned short> comb(combA, combA + sizeof(combA) / sizeof(unsigned short));
00310         //massDiff.push_back(std::make_pair(std::abs(dRMass_.at(mass1)-dRMass_.at(mass2)), comb));
00311         massDiffMWCands_.push_back(std::abs(dRMass_.at(mass1)-dRMass_.at(mass2)));
00312       }
00313     }
00314     if(massDiffMWCands_.size() > 20) break;
00315   }
00316 
00317   //std::sort(massDiff.begin(), massDiff.end());
00318   /*
00319   for(std::vector<std::pair< double, std::vector<unsigned short> > >::const_iterator diff = massDiff.begin(); diff != massDiff.end() ; ++diff){
00320     std::cout << "| "   << dRMass_.at(diff->second.at(0)) << "(" << diff->second.at(0)
00321               << ") - " << dRMass_.at(diff->second.at(1)) << "(" << diff->second.at(1)
00322               << ") | = " << diff->first << std::endl;
00323   }
00324   std::cout << "---------------------------------------------" << std::endl;
00325   */
00326 
00327   std::sort(TCHE_BJet_Discs_  .begin(), TCHE_BJet_Discs_  .end());
00328   std::sort(TCHP_BJet_Discs_  .begin(), TCHP_BJet_Discs_  .end());
00329   std::sort(SSVHE_BJet_Discs_ .begin(), SSVHE_BJet_Discs_ .end());
00330   std::sort(SSVHP_BJet_Discs_ .begin(), SSVHP_BJet_Discs_ .end());
00331   std::sort(CSV_BJet_Discs_   .begin(), CSV_BJet_Discs_   .end());
00332   std::sort(CSVMVA_BJet_Discs_.begin(), CSVMVA_BJet_Discs_.end());
00333   std::sort(SM_BJet_Discs_    .begin(), SM_BJet_Discs_    .end());
00334 
00335   std::sort(etaetaMoments_.begin(), etaetaMoments_.end());
00336   std::sort(etaphiMoments_.begin(), etaphiMoments_.end());
00337   std::sort(phiphiMoments_.begin(), phiphiMoments_.end());
00338 
00339   std::sort(etaetaMomentsLogEt_.begin(), etaetaMomentsLogEt_.end());
00340   std::sort(etaphiMomentsLogEt_.begin(), etaphiMomentsLogEt_.end());
00341   std::sort(phiphiMomentsLogEt_.begin(), phiphiMomentsLogEt_.end());
00342 
00343   std::sort(etaetaMomentsMoment_.begin(), etaetaMomentsMoment_.end());
00344   std::sort(etaphiMomentsMoment_.begin(), etaphiMomentsMoment_.end());
00345   std::sort(phiphiMomentsMoment_.begin(), phiphiMomentsMoment_.end());
00346 
00347   std::sort(etaetaMomentsMomentLogEt_.begin(), etaetaMomentsMomentLogEt_.end());
00348   std::sort(etaphiMomentsMomentLogEt_.begin(), etaphiMomentsMomentLogEt_.end());
00349   std::sort(phiphiMomentsMomentLogEt_.begin(), phiphiMomentsMomentLogEt_.end());
00350 
00351   std::sort(etaetaMomentsNoB_.begin(), etaetaMomentsNoB_.end());
00352   std::sort(etaphiMomentsNoB_.begin(), etaphiMomentsNoB_.end());
00353   std::sort(phiphiMomentsNoB_.begin(), phiphiMomentsNoB_.end());
00354 
00355   std::sort(M3s.begin(), M3s.end());
00356   M3_ = ( jets.at((M3s.back().second.at(0))).p4() +  jets.at((M3s.back().second.at(1))).p4() + jets.at((M3s.back().second.at(2))).p4() ).mass();
00357 
00358   sqrt_s_ = totalSystem.mass();
00359 
00360   for(std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > >::const_iterator jet = fourVectors.begin(); jet != fourVectors.end(); ++jet){
00361     ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > boostedJet = CoMBoostTotal( *jet );
00362     if(jet - fourVectors.begin() > 1){
00363       thetaStar3jet_ += (boostedJet.Theta() > M_PI/2.)? (M_PI - boostedJet.Theta()) : boostedJet.Theta();
00364       sinThetaStar3jet_ += sin(boostedJet.Theta());
00365       EtStar3jet_ += jet->Et() * pow( sin( boostedJet.Theta() ), 2);
00366     }
00367     thetaStars_.push_back((boostedJet.Theta() > M_PI/2.)? (M_PI - boostedJet.Theta()) : boostedJet.Theta());
00368     EtStars_.push_back( jet->Et() * pow( sin( boostedJet.Theta() ), 2) );
00369   }
00370 
00371   theta3jet_        /= (double)fourVectors.size() - 2.;
00372   sinTheta3jet_     /= (double)fourVectors.size() - 2.;
00373   thetaStar3jet_    /= (double)fourVectors.size() - 2.;
00374   sinThetaStar3jet_ /= (double)fourVectors.size() - 2.;
00375   
00376   EventShapeVariables eventshape(makeVecForEventShape(jets));
00377 
00378   aplanarity_  = eventshape.aplanarity();
00379   sphericity_  = eventshape.sphericity();
00380   circularity_ = eventshape.circularity();
00381   isotropy_    = eventshape.isotropy();
00382   C_           = eventshape.C();
00383   D_           = eventshape.D();
00384 
00385   EventShapeVariables eventshapeAll(makeVecForEventShape(jets,false));
00386 
00387   aplanarityAll_  = eventshapeAll.aplanarity();
00388   sphericityAll_  = eventshapeAll.sphericity();
00389   circularityAll_ = eventshapeAll.circularity();
00390   isotropyAll_    = eventshapeAll.isotropy();
00391   CAll_           = eventshapeAll.C();
00392   DAll_           = eventshapeAll.D();
00393 
00394   EventShapeVariables eventshapeAllCMS(makeVecForEventShape(jets,false,CoMBoostTotal));
00395 
00396   aplanarityAllCMS_  = eventshapeAllCMS.aplanarity();
00397   sphericityAllCMS_  = eventshapeAllCMS.sphericity();
00398   circularityAllCMS_ = eventshapeAllCMS.circularity();
00399   isotropyAllCMS_    = eventshapeAllCMS.isotropy();
00400   CAllCMS_           = eventshapeAllCMS.C();
00401   DAllCMS_           = eventshapeAllCMS.D();
00402 
00403   Thrust thrustAlgo(jets.begin(), jets.end());
00404   thrust_ = thrustAlgo.thrust();
00405 
00406   Thrust thrustAlgoCMS(boostedJets.begin(), boostedJets.end());
00407   thrustCMS_ = thrustAlgoCMS.thrust();
00408 
00409 }
00410 
00411 TtFullHadSignalSel::~TtFullHadSignalSel() 
00412 {
00413 }