Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
224 changes: 103 additions & 121 deletions PWGLF/Tasks/Strangeness/lambdaJetpolarization.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -658,8 +658,6 @@ struct myAnalysis {
JEhistos.fill(HIST("V0Counts"), V0NumbersPerEvent);
}
PROCESS_SWITCH(myAnalysis, processV0, "processV0", true);


};

/////////////////////////////
Expand Down Expand Up @@ -712,73 +710,70 @@ struct LfMyV0s {
registry.add("V0protonphiInJetV0frame", "V0protonphiInJetV0frame", kTH1F, {axisPhi});

registry.add("hLambdamassandSinPhi", "V0protonphiInJetV0frame", kTH2F, {{200, 0.9, 1.2}, {200, -1, 1}});
registry.add("profile", "Invariant Mass vs sin(phi)", {HistType::kTProfile, {{200, 0.9,1.2}}});



registry.add("profile", "Invariant Mass vs sin(phi)", {HistType::kTProfile, {{200, 0.9, 1.2}}});
}
double massPr = o2::constants::physics::MassProton;
double massLambda = o2::constants::physics::MassLambda;

TMatrixD LorentzTransInV0frame(double ELambda,double Lambdapx,double Lambdapy,double Lambdapz){
double PLambda = sqrt(Lambdapx*Lambdapx+Lambdapy*Lambdapy+Lambdapz*Lambdapz);
double LambdaMass = sqrt(ELambda*ELambda-PLambda*PLambda);

double Alpha = 1/(LambdaMass*(ELambda + LambdaMass));
TMatrixD matrixLabToLambda(4,4);
matrixLabToLambda(0,0) = ELambda/LambdaMass;
matrixLabToLambda(0,1) = - Lambdapx / LambdaMass;
matrixLabToLambda(0,2) = - Lambdapy / LambdaMass;
matrixLabToLambda(0,3) = - Lambdapz / LambdaMass;
matrixLabToLambda(1,0) = - Lambdapx / LambdaMass;
matrixLabToLambda(1,1) = 1+Alpha*Lambdapx*Lambdapx;
matrixLabToLambda(1,2) = Alpha*Lambdapx*Lambdapy;
matrixLabToLambda(1,3) = Alpha*Lambdapx*Lambdapz;
matrixLabToLambda(2,0) = - Lambdapy / LambdaMass;
matrixLabToLambda(2,1) = Alpha*Lambdapy*Lambdapx;
matrixLabToLambda(2,2) = 1+Alpha*Lambdapy*Lambdapy;
matrixLabToLambda(2,3) = Alpha*Lambdapy*Lambdapz;
matrixLabToLambda(3,0) = - Lambdapz / LambdaMass;
matrixLabToLambda(3,1) = Alpha*Lambdapz*Lambdapx;
matrixLabToLambda(3,2) = Alpha*Lambdapz*Lambdapy;
matrixLabToLambda(3,3) = 1+Alpha*Lambdapz*Lambdapz;
double massLambda = o2::constants::physics::MassLambda;

TMatrixD LorentzTransInV0frame(double ELambda, double Lambdapx, double Lambdapy, double Lambdapz)
{
double PLambda = sqrt(Lambdapx * Lambdapx + Lambdapy * Lambdapy + Lambdapz * Lambdapz);
double LambdaMass = sqrt(ELambda * ELambda - PLambda * PLambda);

double Alpha = 1 / (LambdaMass * (ELambda + LambdaMass));
TMatrixD matrixLabToLambda(4, 4);
matrixLabToLambda(0, 0) = ELambda / LambdaMass;
matrixLabToLambda(0, 1) = -Lambdapx / LambdaMass;
matrixLabToLambda(0, 2) = -Lambdapy / LambdaMass;
matrixLabToLambda(0, 3) = -Lambdapz / LambdaMass;
matrixLabToLambda(1, 0) = -Lambdapx / LambdaMass;
matrixLabToLambda(1, 1) = 1 + Alpha * Lambdapx * Lambdapx;
matrixLabToLambda(1, 2) = Alpha * Lambdapx * Lambdapy;
matrixLabToLambda(1, 3) = Alpha * Lambdapx * Lambdapz;
matrixLabToLambda(2, 0) = -Lambdapy / LambdaMass;
matrixLabToLambda(2, 1) = Alpha * Lambdapy * Lambdapx;
matrixLabToLambda(2, 2) = 1 + Alpha * Lambdapy * Lambdapy;
matrixLabToLambda(2, 3) = Alpha * Lambdapy * Lambdapz;
matrixLabToLambda(3, 0) = -Lambdapz / LambdaMass;
matrixLabToLambda(3, 1) = Alpha * Lambdapz * Lambdapx;
matrixLabToLambda(3, 2) = Alpha * Lambdapz * Lambdapy;
matrixLabToLambda(3, 3) = 1 + Alpha * Lambdapz * Lambdapz;
return matrixLabToLambda;
}
TMatrixD MyTMatrixTranslationToJet(double Jetpx,double Jetpy,double Jetpz,double Lambdapx,double Lambdapy,double Lambdapz){



TVector3 UnitX(1.0,0.0,0.0);
TVector3 UnitY(0.0,1.0,0.0);
TVector3 UnitZ(0.0,0.0,1.0);
TVector3 JetP(Jetpx,Jetpy,Jetpz);
TVector3 V0LambdaP(Lambdapx,Lambdapy,Lambdapz);
TMatrixD MyTMatrixTranslationToJet(double Jetpx, double Jetpy, double Jetpz, double Lambdapx, double Lambdapy, double Lambdapz)
{

TVector3 UnitX(1.0, 0.0, 0.0);
TVector3 UnitY(0.0, 1.0, 0.0);
TVector3 UnitZ(0.0, 0.0, 1.0);
TVector3 JetP(Jetpx, Jetpy, Jetpz);
TVector3 V0LambdaP(Lambdapx, Lambdapy, Lambdapz);
TVector3 JetCrossV0 = (JetP.Cross(V0LambdaP));
TVector3 YinJet =(JetCrossV0).Cross(JetP) ;
TVector3 YinJet = (JetCrossV0).Cross(JetP);
TVector3 UnitXInJet = JetP.Unit();
TVector3 UnitYInJet = YinJet.Unit();
TVector3 UnitZInJet = JetCrossV0.Unit();
TMatrixD matrixLabToJet(4,4);

matrixLabToJet(0,0) = 1.12;
matrixLabToJet(0,1) = 0.0;
matrixLabToJet(0,2) = 0.0;
matrixLabToJet(0,3) = 0.0;
matrixLabToJet(1,0) = 0.0;
matrixLabToJet(1,1) = UnitXInJet*UnitX;
matrixLabToJet(1,2) = UnitXInJet*UnitY;
matrixLabToJet(1,3) = UnitXInJet*UnitZ;
matrixLabToJet(2,0) = 0.0;
matrixLabToJet(2,1) = UnitYInJet*UnitX;
matrixLabToJet(2,2) = UnitYInJet*UnitY;
matrixLabToJet(2,3) = UnitYInJet*UnitZ;
matrixLabToJet(3,0) = 0.0;
matrixLabToJet(3,1) = UnitZInJet*UnitX;
matrixLabToJet(3,2) = UnitZInJet*UnitY;
matrixLabToJet(3,3) = UnitZInJet*UnitZ;
TMatrixD matrixLabToJet(4, 4);

matrixLabToJet(0, 0) = 1.12;
matrixLabToJet(0, 1) = 0.0;
matrixLabToJet(0, 2) = 0.0;
matrixLabToJet(0, 3) = 0.0;
matrixLabToJet(1, 0) = 0.0;
matrixLabToJet(1, 1) = UnitXInJet * UnitX;
matrixLabToJet(1, 2) = UnitXInJet * UnitY;
matrixLabToJet(1, 3) = UnitXInJet * UnitZ;
matrixLabToJet(2, 0) = 0.0;
matrixLabToJet(2, 1) = UnitYInJet * UnitX;
matrixLabToJet(2, 2) = UnitYInJet * UnitY;
matrixLabToJet(2, 3) = UnitYInJet * UnitZ;
matrixLabToJet(3, 0) = 0.0;
matrixLabToJet(3, 1) = UnitZInJet * UnitX;
matrixLabToJet(3, 2) = UnitZInJet * UnitY;
matrixLabToJet(3, 3) = UnitZInJet * UnitZ;

return matrixLabToJet;
}
}

int N = 0;
int JetNumbers = 0;
Expand All @@ -797,91 +792,78 @@ struct LfMyV0s {
registry.fill(HIST("V0protonpyInLab"), candidate.v0protonpy());
registry.fill(HIST("V0protonpzInLab"), candidate.v0protonpz());

double protonsinPhiInLab = candidate.v0protonpy()/sqrt(candidate.v0protonpx()*candidate.v0protonpx()+candidate.v0protonpy()*candidate.v0protonpy());
double protonsinPhiInLab = candidate.v0protonpy() / sqrt(candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy());
registry.fill(HIST("V0protonphiInLab"), protonsinPhiInLab);


double PLambda = sqrt(candidate.v0px()*candidate.v0px()+candidate.v0py()*candidate.v0py()+candidate.v0pz()*candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass()*candidate.v0Lambdamass()+PLambda*PLambda);
TMatrixD pLabV0(4,1);
pLabV0(0,0) = ELambda;
pLabV0(1,0) = candidate.v0px();
pLabV0(2,0) = candidate.v0py();
pLabV0(3,0) = candidate.v0pz();
TMatrixD V0InV0(4,1);
V0InV0 = LorentzTransInV0frame(ELambda,candidate.v0px(),candidate.v0py(),candidate.v0pz()) *pLabV0;
registry.fill(HIST("V0pxInRest_frame"), V0InV0(1,0));
registry.fill(HIST("V0pyInRest_frame"), V0InV0(2,0));
registry.fill(HIST("V0pzInRest_frame"), V0InV0(3,0));



double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);
TMatrixD pLabV0(4, 1);
pLabV0(0, 0) = ELambda;
pLabV0(1, 0) = candidate.v0px();
pLabV0(2, 0) = candidate.v0py();
pLabV0(3, 0) = candidate.v0pz();
TMatrixD V0InV0(4, 1);
V0InV0 = LorentzTransInV0frame(ELambda, candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabV0;
registry.fill(HIST("V0pxInRest_frame"), V0InV0(1, 0));
registry.fill(HIST("V0pyInRest_frame"), V0InV0(2, 0));
registry.fill(HIST("V0pzInRest_frame"), V0InV0(3, 0));
}
for (auto& candidate : myv0s) {


double PLambda = sqrt(candidate.v0px()*candidate.v0px()+candidate.v0py()*candidate.v0py()+candidate.v0pz()*candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass()*candidate.v0Lambdamass()+PLambda*PLambda);

TMatrixD pLabproton(4,1);
double protonE = sqrt(0.938*0.938+candidate.v0protonpx()*candidate.v0protonpx()+candidate.v0protonpy()*candidate.v0protonpy()+candidate.v0protonpz()*candidate.v0protonpz());
pLabproton(0,0) = protonE;
pLabproton(1,0) = candidate.v0protonpx();
pLabproton(2,0) = candidate.v0protonpy();
pLabproton(3,0) = candidate.v0protonpz();
TMatrixD protonInV0(4,1);
protonInV0 = LorentzTransInV0frame(ELambda,candidate.v0px(),candidate.v0py(),candidate.v0pz()) *pLabproton;
registry.fill(HIST("V0protonpxInRest_frame"), protonInV0(1,0));
registry.fill(HIST("V0protonpyInRest_frame"), protonInV0(2,0));
registry.fill(HIST("V0protonpzInRest_frame"), protonInV0(3,0));
double protonsinPhiInV0frame = protonInV0(2,0)/sqrt(protonInV0(1,0)*protonInV0(1,0)+protonInV0(2,0)*protonInV0(2,0));
registry.fill(HIST("V0protonphiInRest_frame"), protonsinPhiInV0frame);

double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);

TMatrixD pLabproton(4, 1);
double protonE = sqrt(0.938 * 0.938 + candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy() + candidate.v0protonpz() * candidate.v0protonpz());
pLabproton(0, 0) = protonE;
pLabproton(1, 0) = candidate.v0protonpx();
pLabproton(2, 0) = candidate.v0protonpy();
pLabproton(3, 0) = candidate.v0protonpz();
TMatrixD protonInV0(4, 1);
protonInV0 = LorentzTransInV0frame(ELambda, candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabproton;
registry.fill(HIST("V0protonpxInRest_frame"), protonInV0(1, 0));
registry.fill(HIST("V0protonpyInRest_frame"), protonInV0(2, 0));
registry.fill(HIST("V0protonpzInRest_frame"), protonInV0(3, 0));
double protonsinPhiInV0frame = protonInV0(2, 0) / sqrt(protonInV0(1, 0) * protonInV0(1, 0) + protonInV0(2, 0) * protonInV0(2, 0));
registry.fill(HIST("V0protonphiInRest_frame"), protonsinPhiInV0frame);
}





for (auto& Jet : myJets) {
JetNumbers++;
registry.fill(HIST("JetpxInLab"), Jet.jetpx());
registry.fill(HIST("JetpyInLab"), Jet.jetpy());
registry.fill(HIST("JetpzInLab"), Jet.jetpz());
registry.fill(HIST("JetpTInLab"), Jet.jetpt());
}



}

PROCESS_SWITCH(LfMyV0s, processJetV0Analysis, "processJetV0Analysis", true);
//aod::MyTableJet
// aod::MyTableJet
void processLeadingJetV0Analysis(aod::MyCollision const& collision, aod::MyTable const& myv0s, aod::MyTableLeadingJet const& myleadingJets)
{
int JetNumbers = 0;

for (auto& candidate : myv0s) {
for (auto& LeadingJet : myleadingJets) {
if(candidate.mycollisionv0() == LeadingJet.mycollisionleadingjet()){
double PLambda = sqrt(candidate.v0px()*candidate.v0px()+candidate.v0py()*candidate.v0py()+candidate.v0pz()*candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass()*candidate.v0Lambdamass()+PLambda*PLambda);
TMatrixD pLabproton(4,1);
double protonE = sqrt(massPr*massPr+candidate.v0protonpx()*candidate.v0protonpx()+candidate.v0protonpy()*candidate.v0protonpy()+candidate.v0protonpz()*candidate.v0protonpz());
pLabproton(0,0) = protonE;
pLabproton(1,0) = candidate.v0protonpx();
pLabproton(2,0) = candidate.v0protonpy();
pLabproton(3,0) = candidate.v0protonpz();
TMatrixD protonInJetV0(4,1);
protonInJetV0 = LorentzTransInV0frame(ELambda,candidate.v0px(),candidate.v0py(),candidate.v0pz())*MyTMatrixTranslationToJet(LeadingJet.leadingjetpx(),LeadingJet.leadingjetpy(),LeadingJet.leadingjetpz(),candidate.v0px(),candidate.v0py(),candidate.v0pz()) *pLabproton;
registry.fill(HIST("V0protonpxInJetV0frame"), protonInJetV0(1,0));
registry.fill(HIST("V0protonpyInJetV0frame"), protonInJetV0(2,0));
registry.fill(HIST("V0protonpzInJetV0frame"), protonInJetV0(3,0));

double protonsinPhiInJetV0frame = protonInJetV0(2,0)/sqrt(protonInJetV0(1,0)*protonInJetV0(1,0)+protonInJetV0(2,0)*protonInJetV0(2,0));
if (candidate.mycollisionv0() == LeadingJet.mycollisionleadingjet()) {
double PLambda = sqrt(candidate.v0px() * candidate.v0px() + candidate.v0py() * candidate.v0py() + candidate.v0pz() * candidate.v0pz());
double ELambda = sqrt(candidate.v0Lambdamass() * candidate.v0Lambdamass() + PLambda * PLambda);
TMatrixD pLabproton(4, 1);
double protonE = sqrt(massPr * massPr + candidate.v0protonpx() * candidate.v0protonpx() + candidate.v0protonpy() * candidate.v0protonpy() + candidate.v0protonpz() * candidate.v0protonpz());
pLabproton(0, 0) = protonE;
pLabproton(1, 0) = candidate.v0protonpx();
pLabproton(2, 0) = candidate.v0protonpy();
pLabproton(3, 0) = candidate.v0protonpz();
TMatrixD protonInJetV0(4, 1);
protonInJetV0 = LorentzTransInV0frame(ELambda, candidate.v0px(), candidate.v0py(), candidate.v0pz()) * MyTMatrixTranslationToJet(LeadingJet.leadingjetpx(), LeadingJet.leadingjetpy(), LeadingJet.leadingjetpz(), candidate.v0px(), candidate.v0py(), candidate.v0pz()) * pLabproton;
registry.fill(HIST("V0protonpxInJetV0frame"), protonInJetV0(1, 0));
registry.fill(HIST("V0protonpyInJetV0frame"), protonInJetV0(2, 0));
registry.fill(HIST("V0protonpzInJetV0frame"), protonInJetV0(3, 0));

double protonsinPhiInJetV0frame = protonInJetV0(2, 0) / sqrt(protonInJetV0(1, 0) * protonInJetV0(1, 0) + protonInJetV0(2, 0) * protonInJetV0(2, 0));
registry.fill(HIST("V0protonphiInJetV0frame"), protonsinPhiInJetV0frame);
registry.fill(HIST("hLambdamassandSinPhi"), candidate.v0Lambdamass(),protonsinPhiInJetV0frame);
registry.fill(HIST("profile"), candidate.v0Lambdamass(),protonsinPhiInJetV0frame);
registry.fill(HIST("hLambdamassandSinPhi"), candidate.v0Lambdamass(), protonsinPhiInJetV0frame);
registry.fill(HIST("profile"), candidate.v0Lambdamass(), protonsinPhiInJetV0frame);
}
}
}
Expand Down
Loading