Skip to content
Snippets Groups Projects
Commit 3c540253 authored by Bertram Kopf's avatar Bertram Kopf
Browse files

added heli trafo with TLorentzVectors in HeliTrafoApp

parent 702e2796
No related branches found
No related tags found
No related merge requests found
......@@ -28,6 +28,8 @@
#include "qft++/topincludes/c++-template-utils.hh"
#include "PspGen/EvtKine.hh"
#include "PspGen/EvtVector4R.hh"
#include "Examples/Tutorial/DfuncClebschG/RootUtils.hh"
#include "TLorentzVector.h"
using namespace std;
//_____________________________________________________________________________
......@@ -364,6 +366,50 @@ int main(int __argc,char *__argv[]){
Vector4<double> cross_crossPbarGf_phiNegDirGf_zAxis=KinUtils::perpTo(crossPbarGf_phiNegDirGf, refAxisPawian);
cout << "cross_crossPbarGf_phiNegDirGf_zAxis (x-direction): " << cross_crossPbarGf_phiNegDirGf_zAxis << endl;
cout << "\nTLorentz vectors transformed into the helicity frame of the eta resonance\n" << endl;
TLorentzVector pLabTLVec(0., 0., 0., PawianConstants::mProton);
TLorentzVector pbarLabTLVec(0., 0., 2.0,sqrt(PawianConstants::mProton*PawianConstants::mProton+2.0*2.0));
TLorentzVector pbarpLabTLVec=pLabTLVec+pbarLabTLVec;
TLorentzVector phiLabTLVec(0. ,0., 1.729, sqrt(1.02*1.02+1.729*1.729) );
phiLabTLVec.SetTheta(30./PawianConstants::radToDeg);
phiLabTLVec.SetPhi(-45./PawianConstants::radToDeg);
TLorentzVector etaLabTLVec= pLabTLVec+pbarLabTLVec-phiLabTLVec;
TLorentzVector gamma1LabTLVec(0. ,0., 0.19176106, 0.19176106);
gamma1LabTLVec.SetTheta(10./PawianConstants::radToDeg);
gamma1LabTLVec.SetPhi(-20./PawianConstants::radToDeg);
cout << "pLabTLVec: ";
pLabTLVec.Print();
Print4Vec(pLabVec, "pLabVec");
cout << "pbarLabTLVec: ";
pbarLabTLVec.Print();
Print4Vec(pbarLabVec, "pbarLabVec");
cout << "pbarpLabTLVec: ";
pbarpLabTLVec.Print();
Print4Vec(pbarpLabVec, "pbarpLabVec");
cout << "phiLabTLVec: ";
phiLabTLVec.Print();
Print4Vec(phiLabVec, "phiLabVec");
cout << "etaLabTLVec: ";
etaLabTLVec.Print();
Print4Vec(etaLabVec, "etaLabVec");
cout << "gamma1LabTLVec: ";
gamma1LabTLVec.Print();
Print4Vec(gamma1LabVec, "gamma1LabVec");
TLorentzVector gamma1HeliTLVec = RootUtils::heliVec(pbarLabTLVec, pbarpLabTLVec, etaLabTLVec, gamma1LabTLVec);
cout << "gamma1HeliTLVec: ";
gamma1HeliTLVec.Print();
Print4Vec(gamma1HeliVec, "gamma1HeliVec");
TLorentzVector phiHeliTLVec = RootUtils::heliVec(pbarLabTLVec, pbarpLabTLVec, etaLabTLVec, phiLabTLVec);
cout << "phiHeliTLVec: ";
phiHeliTLVec.Print();
Print4Vec(phiHeliVec, "phiHeliVec");
cout << "\n************************************" << endl;
cout << "\n now look into the reaction e+ e- -> J/psi -> phi f2(1270)" << endl;
......@@ -377,9 +423,9 @@ int main(int __argc,char *__argv[]){
Vector4<double> epHeliepemVec = KinUtils::heliVec(refAxisPawian, refAxisPawian, epemLabVec, epLabVec);
Print4Vec(epHeliepemVec, "epHeliepemVec");
Vector4<double> refzAxisPawian(0., 0., 0., 1.);
Vector4<double> emHeliepemVec = KinUtils::heliVec(refzAxisPawian, refzAxisPawian, epemLabVec, emLabVec);
Print4Vec(emHeliepemVec, "emHeliepemVec");
Vector4<double> emHeliepemVec = KinUtils::heliVec(refAxisPawian, refAxisPawian, epemLabVec, emLabVec);
Print4Vec(emHeliepemVec, "emHeliepemVec");
return EXIT_SUCCESS;
}
......
//************************************************************************//
// //
// Copyright 2016 Bertram Kopf (bertram@ep1.rub.de) //
// - Ruhr-Universität Bochum //
// //
// This file is part of Pawian. //
// //
// Pawian is free software: you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation, either version 3 of the License, or //
// (at your option) any later version. //
// //
// Pawian is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with Pawian. If not, see <http://www.gnu.org/licenses/>. //
// //
//************************************************************************//
// RootUtils class definition file. -*- C++ -*-
// Copyright 2016 Bertram Kopf
#include "Examples/Tutorial/DfuncClebschG/RootUtils.hh"
#include "TVector3.h"
#include "Utils/PawianConstants.hh"
TLorentzVector RootUtils::heliVec(const TLorentzVector& motherRef, const TLorentzVector& ref,const TLorentzVector& mother, const TLorentzVector& daughter){
TLorentzVector result=daughter;
TLorentzVector refTrafo=ref;
TLorentzVector refRecoilTrafo=motherRef-ref;
//boost all vectors into the mother rest frame
result.Boost(-mother.BoostVector());
refTrafo.Boost(-mother.BoostVector());
refRecoilTrafo.Boost(-mother.BoostVector());
//rotate vectors so that refRecoilTrafo moves in the negative direction of the z-axis
result.RotateZ(-refTrafo.Phi());
result.RotateY(PawianConstants::pi-refTrafo.Theta());
refRecoilTrafo.RotateZ(-refTrafo.Phi());
refRecoilTrafo.RotateY(PawianConstants::pi-refTrafo.Theta());
//rotate around the z-axis so that refRecoil lies in the x-z plain
result.RotateZ(PawianConstants::pi-refRecoilTrafo.Phi());
return result;
}
//************************************************************************//
// //
// Copyright 2016 Bertram Kopf (bertram@ep1.rub.de) //
// - Ruhr-Universität Bochum //
// //
// This file is part of Pawian. //
// //
// Pawian is free software: you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation, either version 3 of the License, or //
// (at your option) any later version. //
// //
// Pawian is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with Pawian. If not, see <http://www.gnu.org/licenses/>. //
// //
//************************************************************************//
#pragma once
#include "qft++/topincludes/relativistic-quantum-mechanics.hh"
#include "TLorentzVector.h"
namespace RootUtils{
TLorentzVector heliVec(const TLorentzVector& motherRef, const TLorentzVector& ref,const TLorentzVector& mother, const TLorentzVector& daughter);
}
......@@ -91,7 +91,6 @@ Vector4<T> KinUtils::heliVec(const Vector4<T>& motherRef, const Vector4<T>& ref
//rotate around the z-axis so that refRecoil lies in the x-z plain
result.RotateZ(PawianConstants::pi-refRecoilTrafo.Phi());
return result;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment