]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/esd_cascade.C
changes for Vertex and Tracks classes
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_cascade.C
index 864ebf36ba2e652756d6e07df3dd21b9be3b6bbe..13a917c8bfce2910316fff6fcbd591f72360afc3 100644 (file)
@@ -6,8 +6,21 @@
  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
  * full copyright notice.                                                 *
  **************************************************************************/
-
-void esd_cascade_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TMath.h>
+#include <TEveManager.h>
+#include <TEveVSDStructs.h>
+#include <TEveTrackPropagator.h>
+
+#include <AliExternalTrackParam.h>
+#include <AliESDEvent.h>
+#include <AliESDcascade.h>
+#include <AliESDVertex.h>
+#include <AliEveCascade.h>
+#include <AliEveEventManager.h>
+#endif
+
+void esd_cascade_init_rectrack(TEveRecTrack& rt, const AliExternalTrackParam* tp)
 {
   Double_t      pbuf[3], vbuf[3];
 
@@ -27,13 +40,7 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
 
   TEveRecTrack   rcBac;
   TEveRecCascade rcCascade;
-
-  Double_t pNeg[3], pPos[3], pV0[3];
-  cascade->GetNPxPyPz(pNeg[0], pNeg[1], pNeg[2]);
-  rcV0.fPPos.Set(pPos);
-  cascade->GetPPxPyPz(pPos[0], pPos[1], pPos[2]);
-  rcV0.fPNeg.Set(pNeg);
-
+  
   Double_t v[3];
   cascade->GetXYZ(v[0], v[1], v[2]);
   rcV0.fVCa.Set(v);
@@ -41,17 +48,38 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
   cascade->GetParamN()->GetXYZ(v);  rcV0.fVNeg.Set(v);
   cascade->GetParamP()->GetXYZ(v);  rcV0.fVPos.Set(v);
 
-  rcV0.fV0Birth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
+  rcV0.fV0Birth.Set(primVtx->GetX(), primVtx->GetY(), primVtx->GetZ());
 
-  Double_t pBac[3], pCascade[3], cv[21]={0.};
+  Double_t pCascade[3]={0.}, pBac[3]={0.}, pNeg[3]={0.}, pPos[3]={0.}, cv[21]={0.};
+  //cascade->GetPxPyPz(pCascade[0], pCascade[1], pCascade[2]);
   cascade->GetBPxPyPz(pBac[0], pBac[1], pBac[2]);
-  rcCascade.fPBac.Set(pBac);
-  cascade->GetPxPyPz(pCascade[0], pCascade[1], pCascade[2]);
+  cascade->GetNPxPyPz(pNeg[0], pNeg[1], pNeg[2]);
+  cascade->GetPPxPyPz(pPos[0], pPos[1], pPos[2]);
+  
+       rcCascade.fPBac.Set(pBac);
+       rcV0.fPNeg.Set(pNeg);
+       rcV0.fPPos.Set(pPos);
+  /*
+  // Debug
+  printf("\n ESD info \n");    
+  printf("Neg :  px = %.5f, py = %.5f, pz = %.5f \n",pNeg[0], pNeg[1], pNeg[2]);
+  printf("Pos :  px = %.5f, py = %.5f, pz = %.5f \n",pPos[0], pPos[1], pPos[2]);
+  printf("Bach : px = %.5f, py = %.5f, pz = %.5f \n",pBac[0], pBac[1], pBac[2]);
+  
+  printf("\n EVE info \n");    
+  printf("Neg :  px = %.5f, py = %.5f, pz = %.5f \n",rcV0.fPNeg.fX, rcV0.fPNeg.fY, rcV0.fPNeg.fZ);
+  printf("Pos :  px = %.5f, py = %.5f, pz = %.5f \n",rcV0.fPPos.fX, rcV0.fPPos.fY, rcV0.fPPos.fZ);
+  printf("Bach : px = %.5f, py = %.5f, pz = %.5f \n",rcCascade.fPBac.fX,rcCascade.fPBac.fY,rcCascade.fPBac.fZ);
+  */
+  Double_t pLambda = TMath::Sqrt((pNeg[0]+pPos[0])* (pNeg[0]+pPos[0]) +
+                                (pNeg[1]+pPos[1])* (pNeg[1]+pPos[1]) +
+                                (pNeg[2]+pPos[2])* (pNeg[2]+pPos[2]) );
+  Double_t pBach   = TMath::Sqrt( pBac[0]*pBac[0] + pBac[1]*pBac[1] + pBac[2]*pBac[2]);
 
   cascade->GetXYZcascade(v[0], v[1], v[2]);
   rcCascade.fCascadeVCa.Set(v);
 
-  rcCascade.fCascadeBirth.Set(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
+  rcCascade.fCascadeBirth.Set(primVtx->GetX(), primVtx->GetY(), primVtx->GetZ());
 
   // Simulation data not directly available in AliESDcascade
   // rcCascade.fDLabel = cascade->GetBindex();
@@ -62,15 +90,52 @@ AliEveCascade* esd_make_cascade(TEveTrackPropagator* rnrStyle, AliESDVertex* pri
   // Solution: create an AliExternalTrackParam with null cv...
   AliExternalTrackParam *bParam = new AliExternalTrackParam(v,pBac,cv,cascade->Charge());
   esd_cascade_init_rectrack(rcBac,bParam);
-  rcBac.fIndex = cascade->GetBindex();
-
-  AliEveCascade* myCascade = new AliEveCascade(&rcBac, &rcV0, &rcCascade, rnrStyle);
+   rcBac.fIndex = cascade->GetBindex();
+  
+  esd_cascade_init_rectrack(rcNeg, cascade->GetParamN());
+   rcNeg.fIndex = cascade->GetNindex();
+  esd_cascade_init_rectrack(rcPos, cascade->GetParamP());
+   rcPos.fIndex = cascade->GetPindex();
+  
+  
+/*
+  // Debug
+  TEveVector BacMom = rcBac.GetMomentum();
+  printf("Bac mom : px = %f, py = %f, pz =%f, Ptot = %f \n", BacMom.fX, 
+        rcBac.GetMomentum().fY, 
+        BacMom.fZ, 
+        BacMom.Mag());
+*/
+  AliEveCascade* myCascade = new AliEveCascade(&rcBac, &rcNeg, &rcPos, &rcV0, &rcCascade, rnrStyle);
   myCascade->SetElementName(Form("ESDcascade %d", i));
-  myCascade->SetElementTitle(Form("DCA %f",
-                             cascade->GetDcaXiDaughters()));
+  
+  /*
+  // Debug
+  TEveVector CascMom(rcCascade.fPBac + rcV0.fPNeg + rcV0.fPPos);
+  printf("Casc mom : px = %f, py = %f, pz =%f, Ptot = %f \n", CascMom.fX, CascMom.fY, CascMom.fZ, CascMom.Mag());
+  */
+  myCascade->SetElementTitle(Form("Info coming directly from AliESDcascade : \n - Charge : %d \n - Cascade decay position : x = %.4f, y = %.4f, z = %.4f, Transv. radius = %.4f cm, Decay Length = %.4f cm\n\n - Pt(Cascade) : %f GeV/c, Ptot(Cascade): %f GeV/c\n - Lambda : px = %.4f, py = %.4f, pz = %.4f, Ptot : %f GeV/c\n - Bach   : px = %.4f, py = %.4f, pz = %.4f, Ptot : %f GeV/c\n\n - Eta : %f\n - Phi : %f deg \n - Theta : %f deg\n - DCA : %f cm \n - Cos(Ptg Angle) : %f \n\n - Eff. mass (Xi hyp) : %f GeV/c2", 
+                                       cascade->Charge(),
+                                       v[0], v[1], v[2], TMath::Sqrt(v[0]*v[0] +v[1]*v[1]), TMath::Sqrt(v[0]*v[0] +v[1]*v[1] + v[2]*v[2] ),
+                                       cascade->Pt(), cascade->P(),
+                                       pNeg[0]+pPos[0], pNeg[1]+pPos[1], pNeg[2]+pPos[2], pLambda,
+                                       pBac[0], pBac[1], pBac[2], pBach,
+                                       cascade->Eta(),
+                                       cascade->Phi()   * 180/TMath::Pi(),
+                                       cascade->Theta() * 180/TMath::Pi(),
+                                       cascade->GetDcaXiDaughters(),
+                                       cascade->GetCascadeCosineOfPointingAngle(primVtx->GetX(),
+                                                                                primVtx->GetY(),
+                                                                                primVtx->GetZ()),
+                                       cascade->GetEffMassXi()
+                                )
+                           );
+
+  
   myCascade->SetESDIndex(i);
   myCascade->SetDaughterDCA(cascade->GetDcaXiDaughters());
-
+  myCascade->SetLambdaP( pNeg[0]+pPos[0], pNeg[1]+pPos[1], pNeg[2]+pPos[2] );
+  myCascade->SetBachP(   pBac[0], pBac[1], pBac[2]);
   return myCascade;
 }
 
@@ -82,7 +147,7 @@ AliEveCascadeList* esd_cascade()
   AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
 
   AliEveCascadeList* cont = new AliEveCascadeList("ESD cascade");
-  cont->SetMainColor(3); // green
+  cont->SetMainColor(kBlue+2);
   TEveTrackPropagator* rnrStyle = cont->GetPropagator();
   rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
 
@@ -104,7 +169,7 @@ AliEveCascadeList* esd_cascade()
     }
   }
 
-  cont->SetTitle("test");
+  cont->SetTitle("Cascade candidates (reco)");
 
   cont->MakeCascades();
   gEve->Redraw3D();