Be sure to load mapping when needed
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackGTU.cxx
index 9ade791..90d32ad 100644 (file)
@@ -42,7 +42,6 @@ AliTRDtrackGTU::AliTRDtrackGTU() :
   TObject(),
   fStack(-1),
   fSector(-1),
-  fPt(0),
   fPID(0),
   fTracklets(0x0),
   fTrackletMask(0),
@@ -85,7 +84,7 @@ void AliTRDtrackGTU::AddTracklet(const AliTRDtrackletGTU * const tracklet, Int_t
   fTrackletMask |= (1 << layer);
 }
 
-AliTRDtrackletGTU* AliTRDtrackGTU::GetTracklet(Int_t layer)
+AliTRDtrackletGTU* AliTRDtrackGTU::GetTracklet(Int_t layer) const
 {
 // get a pointer to the tracklet in the layer specified
 
@@ -137,26 +136,41 @@ Int_t AliTRDtrackGTU::GetZSubChannel()
 
 Int_t AliTRDtrackGTU::GetYapprox()
 {
-// returns an approximated y-position for the track
+  // returns an approximated y-position for the track
+  // taken from the projected y-position of the tracklet in the reference layer
+  // in which the track was found
 
-  for (Int_t layer = 0; layer < AliTRDgtuParam::GetNLayers(); layer++)
-  {
-    if (IsTrackletInLayer(layer))
-      return ((AliTRDtrackletGTU*) (*fTracklets)[layer])->GetYProj();
-  }
-  return 0;
+  if ((fRefLayerIdx > -1) && (fRefLayerIdx < AliTRDgtuParam::GetNRefLayers()))
+    return ((AliTRDtrackletGTU*) (*fTracklets)[AliTRDgtuParam::GetRefLayer(fRefLayerIdx)])->GetYProj();
+  else
+    return 0;
 }
 
 AliESDTrdTrack* AliTRDtrackGTU::CreateTrdTrack() const
 {
-// creates an AliESDTrdTrack to be added to the ESD
-
-    AliESDTrdTrack *trk = new AliESDTrdTrack();
-    trk->SetPID(fPID);
-    if (fLabel >= 0)
-       trk->SetLabel(fLabel);
+  // creates an AliESDTrdTrack to be added to the ESD
+
+  AliESDTrdTrack *trk = new AliESDTrdTrack();
+  trk->SetA((Int_t) fA);
+  trk->SetLayerMask(fTrackletMask);
+  trk->SetPID(fPID);
+  trk->SetB((Int_t) fB);
+  trk->SetStack(fStack);
+  trk->SetSector(fSector);
+  if (fLabel >= 0)
+    trk->SetLabel(fLabel);
+
+  for (Int_t iLayer = 0; iLayer < AliTRDgtuParam::GetNLayers(); iLayer++) {
+    AliTRDtrackletGTU *trklGTU = GetTracklet(iLayer);
+    if (trklGTU) {
+      trk->SetTrackletIndex(trklGTU->GetIndex(), iLayer);
+      AliESDTrdTracklet *trkl = trklGTU->GetTrackletESD();
+      if (trkl)
+       trk->AddTrackletReference(trkl, iLayer);
+    }
+  }
 
-    return trk;
+  return trk;
 }
 
 Bool_t AliTRDtrackGTU::CookLabel()