adding getter for AliTrackPoints (by C.Cheshkov)
authorarcelli <arcelli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 20 Dec 2005 09:43:45 +0000 (09:43 +0000)
committerarcelli <arcelli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 20 Dec 2005 09:43:45 +0000 (09:43 +0000)
TOF/AliTOFtracker.cxx
TOF/AliTOFtracker.h

index 431c318..05017e0 100644 (file)
 #include "AliRun.h"
 #include "AliModule.h"
 
-//#include "AliTOFdigit.h"
 #include "AliTOFcluster.h"
 #include "AliTOFtrack.h"
 #include "AliTOFGeometry.h"
 #include "AliTOFtracker.h"
 
+
+#include "AliTrackPointArray.h"
+#include "AliAlignObj.h"
+
 ClassImp(AliTOFtracker)
 
 //_____________________________________________________________________________
@@ -60,7 +63,6 @@ AliTOFtracker::AliTOFtracker(AliTOFGeometry * geom, Double_t parPID[2]) {
   fSeeds=0x0;
   fTracks=0x0;
   fN=0;
-  //Init(); // temporary solution to know about Holes/no Holes
   fHoles = fGeom->GetHoles();
 }
 //_____________________________________________________________________________
@@ -87,24 +89,6 @@ AliTOFtracker::AliTOFtracker(const AliTOFtracker &t):AliTracker() {
   fN=t.fN;
 }
 //_____________________________________________________________________________
-/*
-void AliTOFtracker::Init() { 
-
-// temporary solution to know about Holes/no Holes, will be implemented as 
-// an AliTOFGeometry getter
-  AliModule* frame=gAlice->GetModule("FRAME"); 
-
-  if(!frame) {
-    AliError("Could Not load FRAME! Assume Frame with Holes");
-    fHoles=true;
-  } else{
-    if(frame->IsVersion()==1) {fHoles=false;}    
-    else {fHoles=true;}      
-  }
-
-}
-*/
-//_____________________________________________________________________________
 Int_t AliTOFtracker::PropagateBack(AliESD* event) {
   //
   // Gets seeds from ESD event and Match with TOF Clusters
@@ -533,3 +517,60 @@ Int_t AliTOFtracker::FindClusterIndex(Double_t z) const {
   }
   return m;
 }
+
+//_________________________________________________________________________
+Bool_t AliTOFtracker::GetTrackPoint(Int_t index, AliTrackPoint& p) const
+{
+  // Get track space point with index i
+  // Coordinates are in the global system
+  AliTOFcluster *cl = fClusters[index];
+  Float_t xyz[3];
+  xyz[0] = cl->GetR()*TMath::Cos(cl->GetPhi());
+  xyz[1] = cl->GetR()*TMath::Sin(cl->GetPhi());
+  xyz[2] = cl->GetZ();
+  p.SetXYZ(xyz[0],xyz[1],xyz[2]);
+
+  // Detector numbering scheme
+  Int_t nSector = fGeom->NSectors();
+  Int_t nPlate  = fGeom->NPlates();
+  Int_t nStripA = fGeom->NStripA();
+  Int_t nStripB = fGeom->NStripB();
+  Int_t nStripC = fGeom->NStripC();
+
+  Int_t isector = cl->GetDetInd(0);
+  if (isector >= nSector)
+    AliError(Form("Wrong sector number in TOF (%d) !",isector));
+  Int_t iplate = cl->GetDetInd(1);
+  if (iplate >= nPlate)
+    AliError(Form("Wrong plate number in TOF (%d) !",iplate));
+  Int_t istrip = cl->GetDetInd(2);
+
+  Int_t stripOffset = 0;
+  switch (iplate) {
+  case 0:
+    stripOffset = 0;
+    break;
+  case 1:
+    stripOffset = nStripC;
+    break;
+  case 2:
+    stripOffset = nStripC+nStripB;
+    break;
+  case 3:
+    stripOffset = nStripC+nStripB+nStripA;
+    break;
+  case 4:
+    stripOffset = nStripC+nStripB+nStripA+nStripB;
+    break;
+  default:
+    AliError(Form("Wrong plate number in TOF (%d) !",iplate));
+    break;
+  };
+
+  Int_t idet = (2*(nStripC+nStripB)+nStripA)*isector +
+               stripOffset +
+               istrip;
+  UShort_t volid = AliAlignObj::LayerToVolUID(AliAlignObj::kTOF,idet);
+  p.SetVolumeID((UShort_t)volid);
+  return kTRUE;
+}
index affcdd6..b95a7f4 100644 (file)
@@ -39,20 +39,19 @@ public:
   virtual Int_t LoadClusters(TTree * /*cTree*/); // Load Clusters
   virtual void  UnloadClusters();// UnLoad Clusters
   virtual AliCluster *GetCluster(Int_t /*index*/) const {return NULL;};
+  Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const;
 
 private:
 
-  //Int_t InsertCluster(AliTOFcluster *c); // Fills TofClusters Array
   Int_t FindClusterIndex(Double_t z) const; // Returns cluster index 
   void  MatchTracks(Bool_t mLastStep); // Matching Algorithm 
   void  CollectESD(); // Select starting Set for Matching 
-  //void  Init();
 
   AliTOFGeometry*  fGeom;                 // Pointer to TOF geometry
   AliTOFpidESD*    fTOFpid;               // Pointer to TOF PID
   AliTOFcluster *fClusters[kMaxCluster];  // pointers to the TOF clusters
 
-  Bool_t fHoles;         // flag for Geometry Version(w/wo Holes) temporary!
+  Bool_t fHoles;         // flag for Geometry Version(w/wo Holes) 
   Int_t fN;              // Number of Clusters
   Int_t fNseeds;         // Number of track seeds  
   Int_t fNseedsTOF;      // TPC BP tracks