kGetPairPlaneAngle can calculate three variables kPairPlaneAngleXY by setting Double_t v0roH2 and Int_t VariNum in AliDielectronVarManager
(Asako)
}
}
-//______________________________________________
-void AliDielectronPair::GetRotPair(Double_t &RotPairx, Double_t &RotPairy, Double_t &RotPairz) const
-{
- // calculation of rotation p1 p2
- Double_t px1=-9999.,py1=-9999.,pz1=-9999.;
- Double_t px2=-9999.,py2=-9999.,pz2=-9999.;
-
- px1 = fD1.GetPx();
- py1 = fD1.GetPy();
- pz1 = fD1.GetPz();
-
- px2 = fD2.GetPx();
- py2 = fD2.GetPy();
- pz2 = fD2.GetPz();
-
- // normal vector of ee plane
- Double_t pnorx = py1*pz2 - pz1*py2;
- Double_t pnory = pz1*px2 - px1*pz2;
- Double_t pnorz = px1*py2 - py1*px2;
- Double_t pnor = TMath::Sqrt( pnorx*pnorx + pnory*pnory + pnorz*pnorz );
-
- //unit vector
- Double_t upnx = -9999.;
- Double_t upny = -9999.;
- Double_t upnz = -9999.;
- if (pnor !=0)
- {
- upnx= pnorx/pnor;
- upny= pnory/pnor;
- upnz= pnorz/pnor;
- }
-
-
- RotPairx = upnx;
- RotPairy = upny;
- RotPairz = upnz;
-
-}
-
//______________________________________________
Double_t AliDielectronPair::PsiPair(Double_t MagField) const
}
//______________________________________________
-Double_t AliDielectronPair::PairPlaneAngle() const
+Double_t AliDielectronPair::GetPairPlaneAngle(const Double_t v0rpH2,const Int_t VariNum)const
{
- // Calculate the angle between electron pair plane and VZERO-C reaction plane for 2nd harmonic
-
+ // Calculate the angle between electron pair plane and variables
+ // kv0rpH2 is reaction plane angle using V0-A,C,AC,Random
Double_t px1=-9999.,py1=-9999.,pz1=-9999.;
Double_t px2=-9999.,py2=-9999.,pz2=-9999.;
//p1+p2
Double_t px = px1+px2;
Double_t py = py1+py2;
- //Double_t pz = pz1+pz2;
+ Double_t pz = pz1+pz2;
// normal vector of ee plane
Double_t pnorx = py1*pz2 - pz1*py2;
Double_t pnorz = px1*py2 - py1*px2;
Double_t pnor = TMath::Sqrt( pnorx*pnorx + pnory*pnory + pnorz*pnorz );
- //unit vector
+ //unit vector
Double_t upnx = -9999.;
Double_t upny = -9999.;
Double_t upnz = -9999.;
- if (pnor !=0)
- {
- upnx= pnorx/pnor;
- upny= pnory/pnor;
- upnz= pnorz/pnor;
- }
-
- // normal vector of strong magnetic field plane
- //rotation coordinates (x,y,z)->(x',y',z')
- //(p1+p2),(0,0,1)
- Double_t ax = py;
- Double_t ay = -px;
- Double_t az = 0.0;
-
- Double_t denomHelper = ax*ax + ay*ay +az*az;
- Double_t uax = -9999.;
- Double_t uay = -9999.;
- Double_t uaz = -9999.;
- if (denomHelper !=0) {
- uax = ax/TMath::Sqrt(denomHelper);
- uay = ay/TMath::Sqrt(denomHelper);
- uaz = az/TMath::Sqrt(denomHelper);
- }
- //PM is the angle between Pair plane and Magnetic field plane
- Double_t cosPM = upnx*uax + upny*uay + upnz*uaz;
- Double_t PM = TMath::ACos(cosPM);
+ if (pnor !=0)
+ {
+ upnx= pnorx/pnor;
+ upny= pnory/pnor;
+ upnz= pnorz/pnor;
+ }
- //keep interval [0,pi/2]
- if(PM > TMath::Pi()/2){
- PM -= TMath::Pi();
- PM *= -1.0;
- }
- return PM;
+ Double_t ax = -9999.;
+ Double_t ay = -9999.;
+ Double_t az = -9999.;
+
+ //variable 1
+ //seeing the angle between ee decay plane and reaction plane by using V0-A,C,AC,Random
+ if(VariNum == 1){
+ ax = TMath::Sin(v0rpH2);
+ ay = -TMath::Cos(v0rpH2);
+ az = 0.0;
+ }
+
+
+ //variable 2
+ //seeing the angle between ee decay plane and (p1+p2) rot ez
+ else if (VariNum == 2 ){
+ ax = py;
+ ay = -px;
+ az = 0.0;
+ }
+
+ //variable 3
+ //seeing the angle between ee decay plane and (p1+p2) rot (p1+p2)x'z
+ else if (VariNum == 3 ){
+ Double_t rotpx = px*TMath::Cos(v0rpH2)+py*TMath::Sin(v0rpH2);
+ //Double_t rotpy = 0.0;
+ // Double_t rotpz = pz;
+
+ ax = py*pz;
+ ay = pz*rotpx-pz*px;
+ az = -rotpx*py;
+ }
+
+ //variable 4
+ //seeing the angle between ee decay plane and (p1+p2) rot ey'
+ else if (VariNum == 4){
+ ax = 0.0;
+ ay = 0.0;
+ az = pz;
+ }
+
+ Double_t denomHelper = ax*ax + ay*ay +az*az;
+ Double_t uax = -9999.;
+ Double_t uay = -9999.;
+ Double_t uaz = -9999.;
+
+ if (denomHelper !=0) {
+ uax = ax/TMath::Sqrt(denomHelper);
+ uay = ay/TMath::Sqrt(denomHelper);
+ uaz = az/TMath::Sqrt(denomHelper);
+ }
+
+ //PM is the angle between Pair plane and a plane decided by using variable 1-4
+
+ Double_t cosPM = upnx*uax + upny*uay + upnz*uaz;
+ Double_t PM = TMath::ACos(cosPM);
+
+ //keep interval [0,pi/2]
+ if(PM > TMath::Pi()/2){
+ PM -= TMath::Pi();
+ PM *= -1.0;
+
+ }
+ return PM;
}
+
//______________________________________________
void AliDielectronPair::SetBeamEnergy(AliVEvent *ev, Double_t beamEbyHand)
{
Double_t PsiPair(Double_t MagField)const; //Angle cut w.r.t. to magnetic field
Double_t PhivPair(Double_t MagField)const; //Angle of ee plane w.r.t. to magnetic field
- // Double_t PairPlanev0rpH2Angle(Double_t kv0CrpH2)const;
- // Double_t PairPlaneMagAngle(Double_t kv0CrpH2)const;
- Double_t PairPlaneAngle()const;\r
+\r
+ //Calculate the angle between ee decay plane and variables\r
+ Double_t GetPairPlaneAngle(const Double_t kv0CrpH2, const Int_t VariNum) const;\r
Double_t GetCosPointingAngle(const AliVVertex *primVtx) const;
Double_t GetArmAlpha() const;
Double_t GetArmPt() const;
- // calculate rotation of p1 p2
- void GetRotPair(Double_t &RotPairx, Double_t &RotPairy, Double_t &RotPairz) const;
-
-
// internal KF particle
const AliKFParticle& GetKFParticle() const { return fPair; }
const AliKFParticle& GetKFFirstDaughter() const { return fD1; }
{"ThetaSqCS", "cos^{2}(#theta_{CS})", ""},
{"PsiPair", "#Psi^{pair}", "(rad.)"},
{"PhivPair", "#Phi_{v}^{pair}", "(rad.)"},
- {"PairPlaneAngle", "PairPlaneAngle", "(rad.)"},
- {"kRotPairx", "kRotPairx", "(rad.)"},
- {"kRotPairy", "kRotPairy", "(rad.)"},
- {"kRotPairz", "kRotPairz", "(rad.)"},
+ {"PairPlaneAngle1A", "#Phi_{1A}", "(rad.)"},
+ {"PairPlaneAngle2A", "#Phi_{2A}", "(rad.)"},
+ {"PairPlaneAngle3A", "#Phi_{3A}", "(rad.)"},
+ {"PairPlaneAngle4A", "#Phi_{4A}", "(rad.)"},
+ {"PairPlaneAngle1C", "#Phi_{1C}", "(rad.)"},
+ {"PairPlaneAngle2C", "#Phi_{2C}", "(rad.)"},
+ {"PairPlaneAngle3C", "#Phi_{3C}", "(rad.)"},
+ {"PairPlaneAngle4C", "#Phi_{4C}", "(rad.)"},
+ {"PairPlaneAngle1AC", "#Phi_{1AC}", "(rad.)"},
+ {"PairPlaneAngle2AC", "#Phi_{2AC}", "(rad.)"},
+ {"PairPlaneAngle3AC", "#Phi_{3AC}", "(rad.)"},
+ {"PairPlaneAngle4AC", "#Phi_{4AC}", "(rad.)"},
+ {"PairPlaneAngle1Ran", "#Phi_{1Ran}", "(rad.)"},
+ {"PairPlaneAngle2Ran", "#Phi_{2Ran}", "(rad.)"},
+ {"PairPlaneAngle3Ran", "#Phi_{3Ran}", "(rad.)"},
+ {"PairPlaneAngle4Ran", "#Phi_{4Ran}", "(rad.)"},
+ {"DeltaPhiRandomRP", "#Phi_{RanRP}", "(rad.)"},
{"Cos2PhiCS", "cos(2#phi_{CS})", ""},
{"CosTilPhiCS", "cos(#phi_{CS})", ""},
{"CosPhiH2", "cos(2#phi)", ""},
kThetaSqCS, // squared value of kThetaCS
kPsiPair, // phi in mother's rest frame in Collins-Soper picture
kPhivPair, // angle between ee plane and the magnetic field (can be useful for conversion rejection)
- kPairPlaneAngle, // angle between ee plane and strong magnetic field
- kRotPairx, //ee plane vector
- kRotPairy, //ee plane vector
- kRotPairz, //ee plane vector
+ \r
+ kPairPlaneAngle1A, // angle between ee decay plane and x'-z reaction plane by using V0-A\r
+ kPairPlaneAngle2A, // angle between ee decay plane and (p1+p2) rot ez\r
+ kPairPlaneAngle3A, // angle between ee decay plane and (p1+p2) rot (p1+p2)x'z\r
+ kPairPlaneAngle4A, // angle between ee decay plane and x'-y' plane\r
+ kPairPlaneAngle1C, // using v0-C\r
+ kPairPlaneAngle2C,\r
+ kPairPlaneAngle3C,\r
+ kPairPlaneAngle4C,\r
+ kPairPlaneAngle1AC, // using v0-AC\r
+ kPairPlaneAngle2AC,\r
+ kPairPlaneAngle3AC,\r
+ kPairPlaneAngle4AC,\r
+ kPairPlaneAngle1Ran, // using random reaction plane\r
+ kPairPlaneAngle2Ran,\r
+ kPairPlaneAngle3Ran,\r
+ kPairPlaneAngle4Ran,\r
+ kRandomRP, //Random reaction plane\r
+ kDeltaPhiRandomRP, //delta phi of the pair\r
+\r
kCos2PhiCS, // Cosine of 2*phi in mother's rest frame in the Collins-Soper picture
kCosTilPhiCS, // Shifted phi depending on kThetaCS
kCosPhiH2, // cosine of pair phi for 2nd harmonic
if ( values[AliDielectronVarManager::kDeltaPhiTPCrpH2] < -1.*TMath::Pi() )
values[AliDielectronVarManager::kDeltaPhiTPCrpH2] += TMath::TwoPi();
- //angle between ee plane and Mag/Reaction plane
- values[AliDielectronVarManager::kPairPlaneAngle] = pair->PairPlaneAngle();\r
- //ee plane vector
- Double_t RotPairx = 0;
- Double_t RotPairy = 0;
- Double_t RotPairz = 0;
- pair->GetRotPair(RotPairx,RotPairy,RotPairz);
- values[AliDielectronVarManager::kRotPairx]=RotPairx;
- values[AliDielectronVarManager::kRotPairy]=RotPairy;
- values[AliDielectronVarManager::kRotPairz]=RotPairz;
+ //Calculate the angle between electrons decay plane and variables 1-4\r
+ values[AliDielectronVarManager::kPairPlaneAngle1A] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ArpH2],1);\r
+ values[AliDielectronVarManager::kPairPlaneAngle2A] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ArpH2],2);\r
+ values[AliDielectronVarManager::kPairPlaneAngle3A] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ArpH2],3);\r
+ values[AliDielectronVarManager::kPairPlaneAngle4A] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ArpH2],4);\r
+\r
+ values[AliDielectronVarManager::kPairPlaneAngle1C] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0CrpH2],1);\r
+ values[AliDielectronVarManager::kPairPlaneAngle2C] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0CrpH2],2);\r
+ values[AliDielectronVarManager::kPairPlaneAngle3C] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0CrpH2],3);\r
+ values[AliDielectronVarManager::kPairPlaneAngle4C] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0CrpH2],4);\r
+\r
+ values[AliDielectronVarManager::kPairPlaneAngle1AC] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ACrpH2],1);\r
+ values[AliDielectronVarManager::kPairPlaneAngle2AC] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ACrpH2],2);\r
+ values[AliDielectronVarManager::kPairPlaneAngle3AC] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ACrpH2],3);\r
+ values[AliDielectronVarManager::kPairPlaneAngle4AC] = pair->GetPairPlaneAngle(values[AliDielectronVarManager::kv0ACrpH2],4);\r
+\r
+ //Random reaction plane\r
+ values[AliDielectronVarManager::kRandomRP] = (TMath::Pi()/2.0)*((Double_t)rand()/RAND_MAX * 2.0 -1.0 );\r
+ //delta phi of pair fron random reaction plane\r
+ values[AliDielectronVarManager::kDeltaPhiRandomRP] = values[AliDielectronVarManager::kPhi] - values[AliDielectronVarManager::kRandomRP];\r
+ // keep the interval [-pi,+pi]\r
+ if ( values[AliDielectronVarManager::kDeltaPhiRandomRP] > TMath::Pi() )\r
+ values[AliDielectronVarManager::kDeltaPhiRandomRP] -= TMath::TwoPi();\r
+\r
+ values[AliDielectronVarManager::kPairPlaneAngle1Ran]= pair->GetPairPlaneAngle(values[AliDielectronVarManager::kRandomRP],1);\r
+ values[AliDielectronVarManager::kPairPlaneAngle2Ran]= pair->GetPairPlaneAngle(values[AliDielectronVarManager::kRandomRP],2);\r
+ values[AliDielectronVarManager::kPairPlaneAngle3Ran]= pair->GetPairPlaneAngle(values[AliDielectronVarManager::kRandomRP],3);\r
+ values[AliDielectronVarManager::kPairPlaneAngle4Ran]= pair->GetPairPlaneAngle(values[AliDielectronVarManager::kRandomRP],4);\r
+\r
+\r
AliDielectronMC *mc=AliDielectronMC::Instance();