示例#1
0
void ISRboost(fastjet::PseudoJet& bj1,fastjet::PseudoJet& bj2,
				const fastjet::PseudoJet& j1,
				const vector<int>& candidates,
				fastjet::ClusterSequence & cs,
				const vector<int>& beam_particles,
				double* boostzVec,double *boostxyVec
				){

			  double q0=bj1.E()+bj2.E();
			  double q2=q0*q0;
			  double k0_rec=q0-j1.E();
			  double keith_beta=j1.pz()/k0_rec;
			  double krec2=j1.px()*j1.px()+j1.py()*j1.py()+j1.pz()*j1.pz();
			  double krec=sqrt(krec2);
			  double recMass2=k0_rec*k0_rec-krec2;
				boostzVec[0]=0;boostzVec[1]=0;boostzVec[2]=keith_beta;

			  double jperp=j1.perp();
			double Keith_norm=sqrt(recMass2+jperp*jperp);

			double boostx=-j1.px()/Keith_norm;
			double boosty=-j1.py()/Keith_norm;
			boostxyVec[0]=-boostx;boostxyVec[1]=-boosty;boostxyVec[2]=0;



			TLorentzVector q(-j1.px(),-j1.py(),-j1.pz(),-j1.E());
			TLorentzVector m1(bj1.px(),bj1.py(),bj1.pz(),bj1.E());
			TLorentzVector m2(bj2.px(),bj2.py(),bj2.pz(),bj2.E());
			q=q+m1+m2;
			NAMED_DEBUG("BOOST",
				std::cout << "q0: " << q0 << " keith_beta: " << keith_beta <<  std::endl ;
				std::cout << "rebM2: " << recMass2 << std::endl ;
				std::cout << "keith norm: " << Keith_norm << std::endl ;
			)
PseudoJet::PseudoJet(fastjet::PseudoJet const& pseudo_jet) :
    fastjet::PseudoJet(pseudo_jet)
{
    INFO(pseudo_jet.px(), px(), pseudo_jet.py(), py());
}