]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveDet/AliEveMUONTrack.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveMUONTrack.cxx
index 6bb0e9ed659c1d1be0f2aa1ee75470576906e0b2..0064e026802d98188779a9f1178d549a44f50e8f 100644 (file)
@@ -12,7 +12,6 @@
 #include <EveBase/AliEveEventManager.h>
 
 #include <AliMagF.h>
-#include <AliMagFMaps.h>
 #include <AliLog.h>
 #include <AliESDMuonTrack.h>
 #include <AliESDEvent.h>
 #include <AliMUONESDInterface.h>
 #include <AliMUONVCluster.h>
 
-#include <TClonesArray.h>
-#include <TStyle.h>
-#include <TROOT.h>
+#include <TObjArray.h>
+#include <TGeoGlobalMagField.h>
 #include <TParticle.h>
 #include <TParticlePDG.h>
+#include <TROOT.h>
+#include <TStyle.h>
 
 #include <Riostream.h>
 
 //______________________________________________________________________________
 // Produce TEveUtil:TEveTrack from AliMUONTrack with dipole field model
 
+using std::cout;
+using std::endl;
+using std::setw;
+using std::setprecision;
 ClassImp(AliEveMUONTrack)
 
-AliMagF* AliEveMUONTrack::fgFieldMap = 0;
 
 //______________________________________________________________________________
 AliEveMUONTrack::AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs) :
@@ -62,9 +65,6 @@ AliEveMUONTrack::AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs) :
   //
   // constructor
   //
-
-  if (fgFieldMap == 0)
-    fgFieldMap = AliEveEventManager::AssertMagField();
 }
 
 //______________________________________________________________________________
@@ -142,7 +142,7 @@ void AliEveMUONTrack::PrintMUONTrackInfo()
   Int_t nparam;
   Float_t pt, bc, nbc, zc;
   AliMUONTrackParam *mtp;
-  TClonesArray *trackParamAtCluster;
+  TObjArray *trackParamAtCluster;
 
   if (!fTrack) {
     cout << "   ! no reconstructed track ..." << endl;
@@ -357,16 +357,16 @@ void AliEveMUONTrack::PrintESDTrackInfo()
 
   AliESDVertex* spdVertex = (AliESDVertex*) esd->GetVertex();
   if (spdVertex->GetNContributors()) {
-    spdVertexZ = spdVertex->GetZv();
-    spdVertexY = spdVertex->GetYv();
-    spdVertexX = spdVertex->GetXv();
+    spdVertexZ = spdVertex->GetZ();
+    spdVertexY = spdVertex->GetY();
+    spdVertexX = spdVertex->GetX();
   }
 
   AliESDVertex* esdVertex = (AliESDVertex*) esd->GetPrimaryVertex();
   if (esdVertex->GetNContributors()) {
-    esdVertexZ = esdVertex->GetZv();
-    esdVertexY = esdVertex->GetYv();
-    esdVertexX = esdVertex->GetXv();
+    esdVertexZ = esdVertex->GetZ();
+    esdVertexY = esdVertex->GetY();
+    esdVertexX = esdVertex->GetX();
   }
 
   Float_t t0v = esd->GetT0zVertex();
@@ -500,9 +500,9 @@ void AliEveMUONTrack::MakeMUONTrack(AliMUONTrack *mtrack)
 
   if (fIsMUONTrack) {
     if (mtrack->GetMatchTrigger()) {
-      sprintf(form,"MUONTrack %2d (MT)", fLabel);
+      snprintf(form,1000,"MUONTrack %2d (MT)", fLabel);
     } else {
-      sprintf(form,"MUONTrack %2d     ", fLabel);
+      snprintf(form,1000,"MUONTrack %2d     ", fLabel);
     }
     SetName(form);
     SetLineStyle(1);
@@ -521,7 +521,7 @@ void AliEveMUONTrack::MakeMUONTrack(AliMUONTrack *mtrack)
   }
   
   Int_t nTrackHits = mtrack->GetNClusters();
-  TClonesArray* trackParamAtCluster = mtrack->GetTrackParamAtCluster();
+  TObjArray* trackParamAtCluster = mtrack->GetTrackParamAtCluster();
   for (Int_t iHit = 0; iHit < nTrackHits; iHit++){
 
     trackParam = (AliMUONTrackParam*) trackParamAtCluster->At(iHit);
@@ -529,7 +529,6 @@ void AliEveMUONTrack::MakeMUONTrack(AliMUONTrack *mtrack)
     if (iHit == 0) {
       if (IsMUONTrack() || IsESDTrack()) {
        pt = TMath::Sqrt(trackParam->Px()*trackParam->Px()+trackParam->Py()*trackParam->Py());
-       printf("Set line color = %d \n",ColorIndex(pt));
        SetLineColor(ColorIndex(pt));
       }
       pv[0] = trackParam->Px();
@@ -648,7 +647,7 @@ void AliEveMUONTrack::MakeMUONTriggerTrack(AliMUONTriggerTrack *mtrack)
 
   char form[1000];
 
-  sprintf(form,"MUONTriggerTrack %2d",mtrack->GetLoTrgNum());
+  snprintf(form,1000,"MUONTriggerTrack %2d",mtrack->GetLoTrgNum());
   SetName(form);
   SetLineStyle(1);
 
@@ -665,9 +664,9 @@ void AliEveMUONTrack::MakeESDTrack(AliESDMuonTrack *mtrack)
 
   char form[1000];
   if (mtrack->GetMatchTrigger()) {
-    sprintf(form,"ESDTrack %2d (MT)", fLabel);
+    snprintf(form,1000,"ESDTrack %2d (MT)", fLabel);
   } else {
-    sprintf(form,"ESDTrack %2d     ", fLabel);
+    snprintf(form,1000,"ESDTrack %2d     ", fLabel);
   }
   SetName(form);
   SetLineStyle(3);
@@ -699,7 +698,7 @@ void AliEveMUONTrack::MakeMCTrack(TParticle *part)
   fPart     = new TParticle(*part);
 
   char form[1000];
-  sprintf(form,"TEveMCTrack %2d ", fLabel);
+  snprintf(form,1000,"TEveMCTrack %2d ", fLabel);
   SetName(form);
   SetLineStyle(2);
   SetLineColor(8);
@@ -752,7 +751,7 @@ void AliEveMUONTrack::MakeRefTrack(AliMUONTrack *mtrack)
   fIsRefTrack = kTRUE;
 
   char form[1000];
-  sprintf(form,"RefTrack %2d ", fLabel);
+  snprintf(form,1000,"RefTrack %2d ", fLabel);
   SetName(form);
   SetLineStyle(2);
   SetLineColor(0);
@@ -773,7 +772,7 @@ void AliEveMUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1,
   Double_t zMax = 0.0;
   Int_t  charge =   0;
   AliMUONTrackParam *trackParam = 0;
-  TClonesArray *trackParamAtCluster = 0;
+  TObjArray *trackParamAtCluster = 0;
 
   if (i2 == 9999) {
     zMax = zr[i1]+1.5*step;
@@ -783,14 +782,11 @@ void AliEveMUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1,
 
   trackParamAtCluster = fTrack->GetTrackParamAtCluster();
 
-  if (IsMUONTrack() || IsESDTrack()) {
+  if (IsMUONTrack() || IsESDTrack() || IsRefTrack()) {
     trackParam = (AliMUONTrackParam*)trackParamAtCluster->At(i1);
     charge = (Int_t)trackParam->GetCharge();
-  }
-  if (IsRefTrack()) {
-    trackParam = fTrack->GetTrackParamAtVertex();
-    charge = (Int_t)trackParam->GetCharge();
-    trackParam = (AliMUONTrackParam*)trackParamAtCluster->At(i1);
+  } else {
+    return;
   }
 
   vect[0] = xr[i1];
@@ -814,37 +810,6 @@ void AliEveMUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1,
 
 }
 
-//______________________________________________________________________________
-void AliEveMUONTrack::GetField(Double_t *position, Double_t *field)
-{
-  //
-  // returns field components at position, for a give field map
-  //
-
-  /// interface for arguments in double precision (Why ? ChF)
-  Float_t x[3], b[3];
-
-  x[0] = position[0]; x[1] = position[1]; x[2] = position[2];
-
-  if (fgFieldMap) {
-    fgFieldMap->Field(x,b);
-  }
-  else {
-    AliWarning("No field map");
-    field[0] = field[1] = field[2] = 0.0;
-    return;
-  }
-
-  // force components
-  //b[1] = 0.0;
-  //b[2] = 0.0;
-
-  field[0] = b[0]; field[1] = b[1]; field[2] = b[2];
-
-  return;
-
-}
-
 //______________________________________________________________________________
 void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
                                  Double_t* vect, Double_t* vout)
@@ -923,8 +888,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       rest  = step - tl;
       if (TMath::Abs(h) > TMath::Abs(rest)) h = rest;
       //cmodif: call gufld(vout,f) changed into:
-
-      GetField(vout,f);
+      TGeoGlobalMagField::Instance()->Field(vout,f);
 
       // *
       // *             start of integration
@@ -968,7 +932,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       at     = a + secxs[0];
       bt     = b + secys[0];
@@ -1005,7 +969,7 @@ void AliEveMUONTrack::OneStepRungekutta(Double_t charge, Double_t step,
       xyzt[2] = zt;
 
       //cmodif: call gufld(xyzt,f) changed into:
-      GetField(xyzt,f);
+      TGeoGlobalMagField::Instance()->Field(xyzt,f);
 
       z      = z + (c + (seczs[0] + seczs[1] + seczs[2]) * kthird) * h;
       y      = y + (b + (secys[0] + secys[1] + secys[2]) * kthird) * h;
@@ -1107,3 +1071,32 @@ Int_t AliEveMUONTrack::ColorIndex(Float_t val)
   return gStyle->GetColorPalette(TMath::Min(nCol - 1, cBin));
 
 }
+
+//==============================================================================
+// Temporary AliEveMUONTrackList
+//==============================================================================
+
+//______________________________________________________________________________
+void AliEveMUONTrackList::HackMomentumLimits(Bool_t recurse)
+{
+  // Find momentum limits from included tracks.
+
+  fLimPt = fLimP = 0;
+
+  for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
+  {
+    TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
+    if (track)
+    {
+      fLimPt = TMath::Max(fLimPt, track->GetMomentum().Perp());
+      fLimP  = TMath::Max(fLimP,  track->GetMomentum().Mag());
+    }
+    if (recurse)
+      FindMomentumLimits(*i, recurse);
+  }
+
+  fLimPt = RoundMomentumLimit(fLimPt);
+  fLimP  = RoundMomentumLimit(fLimP);
+  if (fMaxPt == 0) fMaxPt = fLimPt;
+  if (fMaxP  == 0) fMaxP  = fLimP;
+}