Calling the V0 and cascade finders from AliReconstruction, and the possibility to...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 1 Dec 2006 17:20:04 +0000 (17:20 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 1 Dec 2006 17:20:04 +0000 (17:20 +0000)
ITS/AliITSReconstructor.cxx
MONITOR/AliMonitorProcess.cxx
STEER/AliCascadeVertexer.cxx
STEER/AliCascadeVertexer.h
STEER/AliReconstruction.cxx
STEER/AliV0vertexer.cxx
STEER/AliV0vertexer.h

index fbb7288..6c4ff31 100644 (file)
@@ -38,8 +38,6 @@
 #include "AliITSpidESD.h"
 #include "AliITSpidESD1.h"
 #include "AliITSpidESD2.h"
-#include "AliV0vertexer.h"
-#include "AliCascadeVertexer.h"
 #include "AliITSInitGeometry.h"
 
 ClassImp(AliITSReconstructor)
@@ -239,35 +237,6 @@ void AliITSReconstructor::FillESD(AliRunLoader* runLoader,
   else {
     Error("FillESD","!! cannot do the PID !!\n");
   }
-  // V0 finding
-  Double_t cuts[]={33,  // max. allowed chi2
-                  0.16,// min. allowed negative daughter's impact parameter 
-                  0.05,// min. allowed positive daughter's impact parameter 
-                  0.08,// max. allowed DCA between the daughter tracks
-                  0.99,// max. allowed cosine of V0's pointing angle
-                  0.9,  // min. radius of the fiducial volume
-                  2.9   // max. radius of the fiducial volume
-  };
-  AliV0vertexer vtxer(cuts);
-  Double_t vtx[3], cvtx[6];
-  esd->GetVertex()->GetXYZ(vtx);
-  esd->GetVertex()->GetSigmaXYZ(cvtx);
-  vtxer.SetVertex(vtx);
-  vtxer.Tracks2V0vertices(esd);
-
-  // cascade finding
-  Double_t cts[]={33.,    // max. allowed chi2
-                 0.05,   // min. allowed V0 impact parameter 
-                 0.008,  // window around the Lambda mass 
-                 0.035,  // min. allowed bachelor's impact parameter 
-                 0.10,   // max. allowed DCA between a V0 and a track
-                 0.9985, //max. allowed cosine of the cascade pointing angle
-                 0.9,    // min. radius of the fiducial volume
-                 2.9     // max. radius of the fiducial volume
-  };
-  AliCascadeVertexer cvtxer=AliCascadeVertexer(cts);
-  cvtxer.SetVertex(vtx);
-  cvtxer.V0sTracks2CascadeVertices(esd);
 }
 
 
index d1e4357..0eae474 100644 (file)
@@ -672,9 +672,6 @@ Bool_t AliMonitorProcess::ReconstructV0s(AliESD* esd)
   // V0 finder
   AliDebug(1, "reconstructing V0s...");
   AliV0vertexer vertexer;
-  Double_t vtx[3];
-  esd->GetVertex()->GetXYZ(vtx);
-  vertexer.SetVertex(vtx);
   vertexer.Tracks2V0vertices(esd);
 
   return kTRUE;
index f27d88a..d023aed 100644 (file)
@@ -22,6 +22,7 @@
 
 //modified by R. Vernet 30/6/2006 : daughter label
 //modified by R. Vernet  3/7/2006 : causality
+//modified by I. Belikov 24/11/2006 : static setter for the default cuts
 
 
 #include <TObjArray.h>
 
 ClassImp(AliCascadeVertexer)
 
+//A set of loose cuts
+Double_t 
+  AliCascadeVertexer::fgChi2max=33.; //maximal allowed chi2 
+Double_t 
+  AliCascadeVertexer::fgDV0min=0.05;  //min. V0 impact parameter
+Double_t 
+  AliCascadeVertexer::fgMassWin=0.008; //window around the Lambda mass
+Double_t 
+  AliCascadeVertexer::fgDBachMin=0.035;//min. bachelor impact parameter
+Double_t 
+  AliCascadeVertexer::fgDCAmax=0.1;  //max. DCA between the V0 and the track 
+Double_t 
+  AliCascadeVertexer::fgCPAmax=0.9985;//max. cosine of the cascade pointing angle
+Double_t 
+  AliCascadeVertexer::fgRmin=0.9;    //min radius of the fiducial volume
+Double_t 
+  AliCascadeVertexer::fgRmax=2.9;    //max radius of the fiducial volume
+  
+
 Int_t AliCascadeVertexer::V0sTracks2CascadeVertices(AliESD *event) {
   //--------------------------------------------------------------------
   // This function reconstructs cascade vertices
   //      Adapted to the ESD by I.Belikov (Jouri.Belikov@cern.ch)
   //--------------------------------------------------------------------
+   const AliESDVertex *vtx=event->GetVertex();
+   Double_t xv=vtx->GetXv(), yv=vtx->GetYv(), zv=vtx->GetZv();
+
    Double_t b=event->GetMagneticField();
    Int_t nV0=(Int_t)event->GetNumberOfV0s();
 
@@ -48,7 +71,7 @@ Int_t AliCascadeVertexer::V0sTracks2CascadeVertices(AliESD *event) {
    for (i=0; i<nV0; i++) {
        AliESDv0 *v=event->GetV0(i);
        if (v->GetOnFlyStatus()) continue;
-       if (v->GetD(fX,fY,fZ)<fDV0min) continue;
+       if (v->GetD(xv,yv,zv)<fDV0min) continue;
        vtcs.AddLast(v);
    }
    nV0=vtcs.GetEntriesFast();
@@ -65,7 +88,7 @@ Int_t AliCascadeVertexer::V0sTracks2CascadeVertices(AliESD *event) {
        if ((status&AliESDtrack::kITSrefit)==0)
           if (flags!=status) continue;
 
-       if (TMath::Abs(esdtr->GetD(fX,fY,b))<fDBachMin) continue;
+       if (TMath::Abs(esdtr->GetD(xv,yv,b))<fDBachMin) continue;
 
        trk[ntr++]=i;
    }   
@@ -108,7 +131,7 @@ Int_t AliCascadeVertexer::V0sTracks2CascadeVertices(AliESD *event) {
          Double_t x1,y1,z1; pv0->GetXYZ(x1,y1,z1);
          if (r2 > (x1*x1+y1*y1)) continue;
 
-        if (cascade.GetCascadeCosineOfPointingAngle(fX,fY,fZ) <fCPAmax) continue; //condition on the cascade pointing angle 
+        if (cascade.GetCascadeCosineOfPointingAngle(xv,yv,zv) <fCPAmax) continue; //condition on the cascade pointing angle 
         
         event->AddCascade(&cascade);
          ncasc++;
@@ -150,7 +173,7 @@ Int_t AliCascadeVertexer::V0sTracks2CascadeVertices(AliESD *event) {
          if (r2 > (x1*x1+y1*y1)) continue;
          if (z*z > z1*z1) continue;
 
-        if (cascade.GetCascadeCosineOfPointingAngle(fX,fY,fZ) < fCPAmax) continue; //condition on the cascade pointing angle 
+        if (cascade.GetCascadeCosineOfPointingAngle(xv,yv,zv) < fCPAmax) continue; //condition on the cascade pointing angle 
         event->AddCascade(&cascade);
          ncasc++;
 
index a3b7a32..e5b8e69 100644 (file)
@@ -20,17 +20,31 @@ class AliExternalTrackParam;
 class AliCascadeVertexer : public TObject {
 public:
   AliCascadeVertexer();
-  AliCascadeVertexer(const Double_t cuts[8]);
   void SetCuts(const Double_t cuts[8]);
-  void SetVertex(Double_t *vtx) { fX=vtx[0]; fY=vtx[1]; fZ=vtx[2]; }
+  static void SetDefaultCuts(const Double_t cuts[8]);
 
   Int_t V0sTracks2CascadeVertices(AliESD *event);
   Double_t PropagateToDCA(AliESDv0 *vtx,AliExternalTrackParam *trk,Double_t b);
 
   void GetCuts(Double_t cuts[8]) const;
-  void GetVertex(Double_t *vtx) const { vtx[0]=fX; vtx[1]=fY; vtx[2]=fZ; }
+  static void GetDefaultCuts(Double_t cuts[8]);
 
 private:
+  static
+  Double_t fgChi2max;   // maximal allowed chi2 
+  static
+  Double_t fgDV0min;    // min. allowed V0 impact parameter
+  static
+  Double_t fgMassWin;   // window around the Lambda mass
+  static
+  Double_t fgDBachMin;  // min. allowed bachelor impact parameter
+  static
+  Double_t fgDCAmax;    // maximal allowed DCA between the V0 and the track 
+  static
+  Double_t fgCPAmax;    // maximal allowed cosine of the cascade pointing angle
+  static
+  Double_t fgRmin, fgRmax;// max & min radii of the fiducial volume
+  
   Double_t fChi2max;    // maximal allowed chi2 
   Double_t fDV0min;     // min. allowed V0 impact parameter
   Double_t fMassWin;    // window around the Lambda mass
@@ -39,42 +53,19 @@ private:
   Double_t fCPAmax;     // maximal allowed cosine of the cascade pointing angle
   Double_t fRmin, fRmax;// max & min radii of the fiducial volume
   
-  Double_t fX;            // X-coordinate of the primary vertex
-  Double_t fY;            // Y-coordinate of the primary vertex
-  Double_t fZ;            // Z-coordinate of the primary vertex
-
-  ClassDef(AliCascadeVertexer,1)  // cascade verterxer 
+  ClassDef(AliCascadeVertexer,2)  // cascade verterxer 
 };
 
 inline AliCascadeVertexer::AliCascadeVertexer() :
   TObject(),
-  fChi2max(33.), 
-  fDV0min(0.015),
-  fMassWin(0.05),
-  fDBachMin(0.015),
-  fDCAmax(0.01),
-  fCPAmax(0.025), 
-  fRmin(0.5),
-  fRmax(2.5), 
-  fX(0),
-  fY(0),
-  fZ(0)
-{
-}
-
-inline AliCascadeVertexer::AliCascadeVertexer(const Double_t cuts[8]) :
-  TObject(),
-  fChi2max(cuts[0]), 
-  fDV0min(cuts[1]),
-  fMassWin(cuts[2]),
-  fDBachMin(cuts[3]),
-  fDCAmax(cuts[4]),
-  fCPAmax(cuts[5]),
-  fRmin(cuts[6]),
-  fRmax(cuts[7]), 
-  fX(0),
-  fY(0),
-  fZ(0)
+  fChi2max(fgChi2max), 
+  fDV0min(fgDV0min),
+  fMassWin(fgMassWin),
+  fDBachMin(fgDBachMin),
+  fDCAmax(fgDCAmax),
+  fCPAmax(fgCPAmax), 
+  fRmin(fgRmin),
+  fRmax(fgRmax)
 {
 }
 
@@ -85,6 +76,13 @@ inline void AliCascadeVertexer::SetCuts(const Double_t cuts[8]) {
   fRmin=cuts[6];     fRmax=cuts[7]; 
 }
 
+inline void AliCascadeVertexer::SetDefaultCuts(const Double_t cuts[8]) {
+  fgChi2max=cuts[0]; 
+  fgDV0min=cuts[1];   fgMassWin=cuts[2]; fgDBachMin=cuts[3];
+  fgDCAmax=cuts[4];   fgCPAmax=cuts[5];
+  fgRmin=cuts[6];     fgRmax=cuts[7]; 
+}
+
 inline void AliCascadeVertexer::GetCuts(Double_t cuts[8]) const {
   cuts[0]=fChi2max; 
   cuts[1]=fDV0min;   cuts[2]=fMassWin;  cuts[3]=fDBachMin;
@@ -92,5 +90,12 @@ inline void AliCascadeVertexer::GetCuts(Double_t cuts[8]) const {
   cuts[6]=fRmin;     cuts[7]=fRmax; 
 }
 
+inline void AliCascadeVertexer::GetDefaultCuts(Double_t cuts[8]) {
+  cuts[0]=fgChi2max; 
+  cuts[1]=fgDV0min;   cuts[2]=fgMassWin;  cuts[3]=fgDBachMin;
+  cuts[4]=fgDCAmax;   cuts[5]=fgCPAmax;
+  cuts[6]=fgRmin;     cuts[7]=fgRmax; 
+}
+
 #endif
 
index f8c7a34..bb54670 100644 (file)
 #include "AliTracker.h"
 #include "AliVertexer.h"
 #include "AliVertexerTracks.h"
+#include "AliV0vertexer.h"
+#include "AliCascadeVertexer.h"
 #include "AliHeader.h"
 #include "AliGenEventHeader.h"
 #include "AliPID.h"
@@ -748,6 +750,16 @@ Bool_t AliReconstruction::Run(const char* input)
 
     esd->SetPrimaryVertex(tVertexer.FindPrimaryVertex(esd));
 
+    {
+    // V0 finding
+    AliV0vertexer vtxer;
+    vtxer.Tracks2V0vertices(esd);
+
+    // Cascade finding
+    AliCascadeVertexer cvtxer;
+    cvtxer.V0sTracks2CascadeVertices(esd);
+    }
     // write ESD
     if (fWriteESDfriend) {
        esdf=new AliESDfriend();
index 51534e4..e460a98 100644 (file)
 
 ClassImp(AliV0vertexer)
 
+
+//A set of very loose cuts 
+Double_t AliV0vertexer::fgChi2max=33.;//max. chi2
+Double_t AliV0vertexer::fgDNmin=0.16; //min. negative daughter's imp parameter 
+Double_t AliV0vertexer::fgDPmin=0.05; //min. positive daughter's imp parameter
+Double_t AliV0vertexer::fgDCAmax=0.08; //max. DCA between the daughter tracks
+Double_t AliV0vertexer::fgCPAmax=0.99;//max. cosine of V0's pointing angle
+Double_t AliV0vertexer::fgRmin=0.9;   //min. radius of the fiducial volume
+Double_t AliV0vertexer::fgRmax=2.9;   //max. radius of the fiducial volume
+
 Int_t AliV0vertexer::Tracks2V0vertices(AliESD *event) {
   //--------------------------------------------------------------------
   //This function reconstructs V0 vertices
   //--------------------------------------------------------------------
+   const AliESDVertex *vtx=event->GetVertex();
+   Double_t xv=vtx->GetXv(), yv=vtx->GetYv(), zv=vtx->GetZv();
 
    Int_t nentr=event->GetNumberOfTracks();
    Double_t b=event->GetMagneticField();
@@ -56,7 +68,7 @@ Int_t AliV0vertexer::Tracks2V0vertices(AliESD *event) {
      if ((status&AliESDtrack::kITSrefit)==0)
         if (flags!=status) continue;
 
-     Double_t d=esdTrack->GetD(fX,fY,b);
+     Double_t d=esdTrack->GetD(xv,yv,b);
      if (TMath::Abs(d)<fDPmin) continue;
      if (TMath::Abs(d)>fRmax) continue;
 
@@ -73,8 +85,8 @@ Int_t AliV0vertexer::Tracks2V0vertices(AliESD *event) {
          Int_t pidx=pos[k];
         AliESDtrack *ptrk=event->GetTrack(pidx);
 
-         if (TMath::Abs(ntrk->GetD(fX,fY,b))<fDNmin)
-          if (TMath::Abs(ptrk->GetD(fX,fY,b))<fDNmin) continue;
+         if (TMath::Abs(ntrk->GetD(xv,yv,b))<fDNmin)
+          if (TMath::Abs(ptrk->GetD(xv,yv,b))<fDNmin) continue;
 
          Double_t xn, xp, dca=ntrk->GetDCA(ptrk,b,xn,xp);
          if (dca > fDCAmax) continue;
@@ -103,7 +115,7 @@ Int_t AliV0vertexer::Tracks2V0vertices(AliESD *event) {
          AliESDv0 vertex(nt,nidx,pt,pidx);
          if (vertex.GetChi2V0() > fChi2max) continue;
         
-        if (vertex.GetV0CosineOfPointingAngle(fX,fY,fZ) < fCPAmax) continue;
+        if (vertex.GetV0CosineOfPointingAngle(xv,yv,zv) < fCPAmax) continue;
         vertex.SetDcaV0Daughters(dca);
 
          event->AddV0(&vertex);
index 28d5e35..08abb5e 100644 (file)
@@ -18,17 +18,28 @@ class AliESD;
 class AliV0vertexer : public TObject {
 public:
   AliV0vertexer();
-  AliV0vertexer(const Double_t cuts[7]);
   void SetCuts(const Double_t cuts[7]);
-  void SetVertex(Double_t *vtx) { fX=vtx[0]; fY=vtx[1]; fZ=vtx[2]; }
+  static void SetDefaultCuts(const Double_t cuts[7]);
 
   Int_t Tracks2V0vertices(AliESD *event);
 
   void GetCuts(Double_t cuts[7]) const;
-  void GetVertex(Double_t *vtx) const { vtx[0]=fX; vtx[1]=fY; vtx[2]=fZ; }
+  static void GetDefaultCuts(Double_t cuts[7]);
 
 private:
-
+  static
+  Double_t fgChi2max;      // maximal allowed chi2 
+  static
+  Double_t fgDNmin;        // min. allowed negative daughter's impact parameter
+  static
+  Double_t fgDPmin;        // min. allowed positive daughter's impact parameter
+  static
+  Double_t fgDCAmax;       // maximal allowed DCA between the daughter tracks 
+  static
+  Double_t fgCPAmax;       // maximal allowed cosine of V0's pointing angle
+  static
+  Double_t fgRmin, fgRmax; // max & min radii of the fiducial volume
+  
   Double_t fChi2max;      // maximal allowed chi2 
   Double_t fDNmin;        // min. allowed negative daughter's impact parameter
   Double_t fDPmin;        // min. allowed positive daughter's impact parameter
@@ -36,40 +47,18 @@ private:
   Double_t fCPAmax;       // maximal allowed cosine of V0's pointing angle
   Double_t fRmin, fRmax;  // max & min radii of the fiducial volume
   
-  Double_t fX;            // X-coordinate of the primary vertex
-  Double_t fY;            // Y-coordinate of the primary vertex
-  Double_t fZ;            // Z-coordinate of the primary vertex
-
-  ClassDef(AliV0vertexer,1)  // V0 verterxer 
+  ClassDef(AliV0vertexer,2)  // V0 verterxer 
 };
 
 inline AliV0vertexer::AliV0vertexer() :
   TObject(),
-  fChi2max(33.), 
-  fDNmin(0.015),
-  fDPmin(0.015),
-  fDCAmax(0.01),
-  fCPAmax(0.025), 
-  fRmin(0.5),
-  fRmax(2.5), 
-  fX(0),
-  fY(0),
-  fZ(0)
-{
-}
-
-inline AliV0vertexer::AliV0vertexer(const Double_t cuts[7]) :
-  TObject(),
-  fChi2max(cuts[0]), 
-  fDNmin(cuts[1]),
-  fDPmin(cuts[2]),
-  fDCAmax(cuts[3]),
-  fCPAmax(cuts[4]),
-  fRmin(cuts[5]),
-  fRmax(cuts[6]), 
-  fX(0),
-  fY(0),
-  fZ(0)
+  fChi2max(fgChi2max), 
+  fDNmin(fgDNmin),
+  fDPmin(fgDPmin),
+  fDCAmax(fgDCAmax),
+  fCPAmax(fgCPAmax), 
+  fRmin(fgRmin),
+  fRmax(fgRmax) 
 {
 }
 
@@ -80,6 +69,13 @@ inline void AliV0vertexer::SetCuts(const Double_t cuts[7]) {
   fRmin=cuts[5];    fRmax=cuts[6]; 
 }
 
+inline void AliV0vertexer::SetDefaultCuts(const Double_t cuts[7]) {
+  fgChi2max=cuts[0]; 
+  fgDNmin=cuts[1];   fgDPmin=cuts[2];
+  fgDCAmax=cuts[3];  fgCPAmax=cuts[4];
+  fgRmin=cuts[5];    fgRmax=cuts[6]; 
+}
+
 inline void AliV0vertexer::GetCuts(Double_t cuts[7]) const {
   cuts[0]=fChi2max; 
   cuts[1]=fDNmin;   cuts[2]=fDPmin; 
@@ -87,6 +83,13 @@ inline void AliV0vertexer::GetCuts(Double_t cuts[7]) const {
   cuts[5]=fRmin;    cuts[6]=fRmax; 
 }
 
+inline void AliV0vertexer::GetDefaultCuts(Double_t cuts[7]) {
+  cuts[0]=fgChi2max; 
+  cuts[1]=fgDNmin;   cuts[2]=fgDPmin; 
+  cuts[3]=fgDCAmax;  cuts[4]=fgCPAmax;
+  cuts[5]=fgRmin;    cuts[6]=fgRmax; 
+}
+
 #endif