Splitting of TRD library (T.Kuhr)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 May 2004 08:02:22 +0000 (08:02 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 May 2004 08:02:22 +0000 (08:02 +0000)
33 files changed:
ALIROOT/binaliroot.pkg
TRD/AliTRD.cxx
TRD/AliTRD.h
TRD/AliTRDReconstructor.cxx
TRD/AliTRDclusterizer.cxx
TRD/AliTRDclusterizer.h
TRD/AliTRDclusterizerMI.cxx
TRD/AliTRDclusterizerV0.cxx
TRD/AliTRDclusterizerV0.h
TRD/AliTRDclusterizerV1.cxx
TRD/AliTRDdigitizer.cxx
TRD/AliTRDdigitsManager.cxx
TRD/AliTRDgeometry.cxx
TRD/AliTRDgeometry.h
TRD/AliTRDparameter.cxx
TRD/AliTRDpid.cxx
TRD/AliTRDpidLQ.cxx
TRD/AliTRDrecPoint.cxx
TRD/AliTRDsegmentArray.cxx
TRD/AliTRDtrack.cxx
TRD/AliTRDtracker.h
TRD/AliTRDv1.cxx
TRD/TRDLinkDef.h [deleted file]
TRD/TRDbaseLinkDef.h [new file with mode: 0644]
TRD/TRDfastLinkDef.h [new file with mode: 0644]
TRD/TRDrecLinkDef.h [new file with mode: 0644]
TRD/TRDsimLinkDef.h [new file with mode: 0644]
TRD/libTRD.pkg [deleted file]
TRD/libTRDbase.pkg [new file with mode: 0644]
TRD/libTRDfast.pkg [new file with mode: 0644]
TRD/libTRDrec.pkg [new file with mode: 0644]
TRD/libTRDsim.pkg [new file with mode: 0644]
build/module.dep

index 76ffa5b..b29eb78 100644 (file)
@@ -4,7 +4,8 @@ CSRCS:=fpu.c
 ELIBSDIR:=
 
 ELIBS:= MUON TPCbase TPCsim TPCrec TPCfast \
-       ITS PMD TRD FMD TOF PHOS CRT RICH ZDC VZERO EMCAL \
+       ITS PMD TRDbase TRDsim TRDrec TRDfast \
+       FMD TOF PHOS CRT RICH ZDC VZERO EMCAL \
         STRUCT START EVGEN STEER CONTAINERS pythia6 AliPythia6 pdf THijing \
         hijing TMEVSIM mevsim THbtp HBTP THerwig herwig TEPEMGEN EPEMGEN \
         TPHIC FASTSIM microcern RAW
index 8444b0a..d2df1b3 100644 (file)
@@ -43,7 +43,6 @@
 #include "AliMagF.h"
 #include "AliRun.h"
 #include "AliTRD.h"
-#include "AliTRDcluster.h"
 #include "AliTRDdigit.h"
 #include "AliTRDdigitizer.h"
 #include "AliTRDdigitsManager.h"
@@ -51,7 +50,6 @@
 #include "AliTRDgeometryHole.h"
 #include "AliTRDhit.h"
 #include "AliTRDpoints.h"
-#include "AliTRDrecPoint.h"
 #include "AliTRDtrackHits.h"  
 #include "AliTrackReference.h"
 #include "AliMC.h"
@@ -70,9 +68,6 @@ AliTRD::AliTRD()
   fHits          = 0;
   fDigits        = 0;
 
-  fRecPoints     = 0;
-  fNRecPoints    = 0;
-
   fGeometry      = 0;
 
   fGasDensity    = 0;
@@ -112,6 +107,12 @@ AliTRD::AliTRD(const char *name, const char *title)
     exit(1);
   }
 
+  // Save the geometry
+  TDirectory* saveDir = gDirectory;
+  gAlice->GetRunLoader()->CdGAFile();
+  fGeometry->Write("TRDgeometry");
+  saveDir->cd();
+
   // Allocate the hit array
   fHits           = new TClonesArray("AliTRDhit"     ,405);
   gAlice->GetMCApp()->AddHitList(fHits);
@@ -119,10 +120,6 @@ AliTRD::AliTRD(const char *name, const char *title)
   // Allocate the digits array
   fDigits         = 0;
 
-  // Allocate the rec point array
-  fRecPoints     = new TObjArray(400);
-  fNRecPoints    = 0;
-   
   fIshunt        = 0;
   fGasMix        = 1;
 
@@ -167,10 +164,10 @@ AliTRD::~AliTRD()
     delete fHits;
     fHits      = 0;
   }
-  if (fRecPoints) {
-    delete fRecPoints;
-    fRecPoints = 0;
-  }
+//  if (fRecPoints) {
+//    delete fRecPoints;
+//    fRecPoints = 0;
+//  }
   if (fTrackHits) {
     delete fTrackHits;
     fTrackHits = 0;
@@ -179,47 +176,6 @@ AliTRD::~AliTRD()
 }
 
 //_____________________________________________________________________________
-void AliTRD::AddCluster(Float_t *pos, Int_t det, Float_t amp
-                      , Int_t *tracks, Float_t *sig, Int_t iType)
-{
-  //
-  // Add a cluster for the TRD
-  //
-
-  AliTRDcluster *c = new AliTRDcluster();
-
-  c->SetDetector(det);
-  c->AddTrackIndex(tracks);
-  c->SetQ(amp);
-  c->SetY(pos[0]);
-  c->SetZ(pos[1]);
-  c->SetSigmaY2(sig[0]);   
-  c->SetSigmaZ2(sig[1]);
-  c->SetLocalTimeBin(((Int_t) pos[2]));
-
-  switch (iType) {
-  case 0:
-    c->Set2pad();
-    break;
-  case 1:
-    c->Set3pad();
-    break;
-  case 2:
-    c->Set4pad();
-    break;
-  case 3:
-    c->Set5pad();
-    break;
-  case 4:
-    c->SetLarge();
-    break;
-  };
-
-  fRecPoints->Add(c);
-
-}
-
-//_____________________________________________________________________________
 void AliTRD::Hits2Digits()
 {
   //
@@ -460,8 +416,6 @@ void AliTRD::Copy(TObject &trd)
 
   ((AliTRD &) trd).fGasMix      = fGasMix;
   ((AliTRD &) trd).fGeometry    = fGeometry;       
-  ((AliTRD &) trd).fRecPoints   = fRecPoints;
-  ((AliTRD &) trd).fNRecPoints  = fNRecPoints;
   ((AliTRD &) trd).fGasDensity  = fGasDensity;
   ((AliTRD &) trd).fFoilDensity = fFoilDensity;
   ((AliTRD &) trd).fDrawTR      = fDrawTR;
@@ -985,46 +939,15 @@ void AliTRD::ResetDigits()
 }
 
 //_____________________________________________________________________________
-void AliTRD::ResetRecPoints()
-{
-  //
-  // Reset number of reconstructed points and the point array
-  //
-
-  if (fRecPoints) {
-    fNRecPoints = 0;
-    Int_t nentr = fRecPoints->GetEntriesFast();
-    for (Int_t i = 0; i < nentr; i++) delete fRecPoints->RemoveAt(i);
-  }
-
-}
-
-//_____________________________________________________________________________
 void AliTRD::SetTreeAddress()
 {
   //
   // Set the branch addresses for the trees.
   //
 
-  Char_t branchname[15];
-
   if ( fLoader->TreeH() && (fHits == 0x0))  fHits = new TClonesArray("AliTRDhit",405);
   AliDetector::SetTreeAddress();
 
-  TBranch *branch;
-  TTree   *treeR = fLoader->TreeR();
-
-  if (treeR) {
-    sprintf(branchname,"%scluster",GetName());
-    if (fRecPoints == 0x0) fRecPoints  = new TObjArray(400);
-    if (fRecPoints) {
-      branch = treeR->GetBranch(branchname);
-      if (branch) {
-        branch->SetAddress(&fRecPoints);
-      }
-    }
-  }
-
   if (fHitType > 0) {
     SetTreeAddress2();    
   }
index 8e460ff..057dec7 100644 (file)
@@ -37,8 +37,6 @@ class AliTRD : public AliDetector {
           AliTRD    &operator=(const AliTRD &trd);
 
   virtual void       AddHit(Int_t track, Int_t det, Float_t *hits, Int_t q, Bool_t inDrift); 
-  virtual void       AddCluster(Float_t *pos, Int_t det, Float_t amp, Int_t *tracks
-                              , Float_t *sig, Int_t iType);
   virtual void       BuildGeometry();
   virtual void       Copy(TObject &trd);
   virtual void       CreateGeometry();
@@ -46,12 +44,10 @@ class AliTRD : public AliDetector {
   virtual void       DrawModule() const;
   Int_t              DistancetoPrimitive(Int_t px, Int_t py) const;
   virtual void       LoadPoints(Int_t track);    
-  TObjArray         *RecPoints() const              { return fRecPoints;   };
   virtual void       Init();
   virtual Int_t      IsVersion() const = 0;
   virtual void       MakeBranch(Option_t* option);
   virtual void       ResetDigits();     
-  virtual void       ResetRecPoints();
   virtual void       StepManager() = 0; 
   virtual void       SetTreeAddress();
 
@@ -105,9 +101,6 @@ class AliTRD : public AliDetector {
 
   AliTRDgeometry      *fGeometry;           //  The TRD geometry
 
-  TObjArray           *fRecPoints;          //  Array of reconstructed points / cluster
-  Int_t                fNRecPoints;         //! Number of reconstructed points / cluster
-
   Float_t              fGasDensity;         //  The density of the drift gas
   Float_t              fFoilDensity;        //  The density of the entrance window foil
 
index 425a1bd..85d2dce 100644 (file)
@@ -25,7 +25,6 @@
 #include "AliTRDReconstructor.h"
 #include "AliRunLoader.h"
 #include "AliTRDparameter.h"
-#include "AliTRD.h"
 #include "AliTRDclusterizerV1.h"
 #include "AliTRDtracker.h"
 #include <TFile.h>
index d04fb07..f47a689 100644 (file)
@@ -29,7 +29,6 @@
 #include "AliRunLoader.h"
 #include "AliLoader.h"
 
-#include "AliTRD.h"
 #include "AliTRDclusterizer.h"
 #include "AliTRDcluster.h"
 #include "AliTRDrecPoint.h"
@@ -46,8 +45,7 @@ AliTRDclusterizer::AliTRDclusterizer():TNamed()
   //
 
   fClusterTree = NULL;
-  fTRD         = 0;
-  fEvent       = 0;
+  fRecPoints   = 0;
   fVerbose     = 0;
   fPar         = 0;
 
@@ -62,7 +60,7 @@ AliTRDclusterizer::AliTRDclusterizer(const Text_t* name, const Text_t* title)
   //
 
   fClusterTree = NULL;
-  fEvent       = 0;
+  fRecPoints   = 0;
   fVerbose     = 0;
   fPar         = 0;
 
@@ -86,6 +84,10 @@ AliTRDclusterizer::~AliTRDclusterizer()
   // AliTRDclusterizer destructor
   //
 
+  if (fRecPoints) {
+    fRecPoints->Delete();
+    delete fRecPoints;
+  }
 }
 
 //_____________________________________________________________________________
@@ -108,7 +110,7 @@ void AliTRDclusterizer::Copy(TObject &c)
   //
 
   ((AliTRDclusterizer &) c).fClusterTree = NULL;
-  ((AliTRDclusterizer &) c).fEvent       = 0;  
+  ((AliTRDclusterizer &) c).fRecPoints   = NULL;  
   ((AliTRDclusterizer &) c).fVerbose     = fVerbose;  
   ((AliTRDclusterizer &) c).fPar         = 0;
 
@@ -176,19 +178,9 @@ Bool_t AliTRDclusterizer::OpenInput(Int_t nEvent)
       }
   }
 
-  fEvent = nEvent;
-
   // Import the Trees for the event nEvent in the file
-  fRunLoader->GetEvent(fEvent);
+  fRunLoader->GetEvent(nEvent);
   
-  // Get the TRD object
-  fTRD = (AliTRD*) gAlice->GetDetector("TRD"); 
-  if (!fTRD) {
-    printf("AliTRDclusterizer::OpenInput -- ");
-    printf("No TRD detector object found\n");
-    return kFALSE;
-  }
-
   return kTRUE;
 
 }
@@ -216,11 +208,11 @@ Bool_t AliTRDclusterizer::WriteClusters(Int_t det)
 
   if ((det >= 0) && (det < AliTRDgeometry::Ndet())) {
 
-    Int_t nRecPoints = fTRD->RecPoints()->GetEntriesFast();
+    Int_t nRecPoints = RecPoints()->GetEntriesFast();
     TObjArray *detRecPoints = new TObjArray(400);
 
     for (Int_t i = 0; i < nRecPoints; i++) {
-      AliTRDcluster *c = (AliTRDcluster *) fTRD->RecPoints()->UncheckedAt(i);
+      AliTRDcluster *c = (AliTRDcluster *) RecPoints()->UncheckedAt(i);
       if (det == c->GetDetector()) {
         detRecPoints->AddLast(c);
       }
@@ -242,7 +234,7 @@ Bool_t AliTRDclusterizer::WriteClusters(Int_t det)
   if (det == -1) {
 
     Info("WriteClusters","Writing the cluster tree %s for event %d."
-        ,fClusterTree->GetName(),fEvent);
+        ,fClusterTree->GetName(),fRunLoader->GetEventNumber());
     /*
     fClusterTree->Write();
     AliTRDgeometry *geo = fTRD->GetGeometry();
@@ -268,4 +260,43 @@ Bool_t AliTRDclusterizer::WriteClusters(Int_t det)
 }
 
 
+//_____________________________________________________________________________
+void AliTRDclusterizer::AddCluster(Float_t *pos, Int_t det, Float_t amp
+                                  , Int_t *tracks, Float_t *sig, Int_t iType)
+{
+  //
+  // Add a cluster for the TRD
+  //
 
+  AliTRDcluster *c = new AliTRDcluster();
+
+  c->SetDetector(det);
+  c->AddTrackIndex(tracks);
+  c->SetQ(amp);
+  c->SetY(pos[0]);
+  c->SetZ(pos[1]);
+  c->SetSigmaY2(sig[0]);   
+  c->SetSigmaZ2(sig[1]);
+  c->SetLocalTimeBin(((Int_t) pos[2]));
+
+  switch (iType) {
+  case 0:
+    c->Set2pad();
+    break;
+  case 1:
+    c->Set3pad();
+    break;
+  case 2:
+    c->Set4pad();
+    break;
+  case 3:
+    c->Set5pad();
+    break;
+  case 4:
+    c->SetLarge();
+    break;
+  };
+
+  RecPoints()->Add(c);
+
+}
index cdcf2f2..7fd3183 100644 (file)
@@ -6,10 +6,13 @@
 /* $Id$ */
 
 #include <TNamed.h>
+#include <TObjArray.h>
 
 class TFile;
+class TTree;
 class AliRunLoader;
 class AliTRDparameter;
+class AliTRD;
 
 ///////////////////////////////////////////////////////
 //  Finds and handles cluster                        //
@@ -37,15 +40,20 @@ class AliTRDclusterizer : public TNamed {
 
   AliTRDparameter *GetParameter()                    const { return fPar;          };
 
+  TObjArray*      RecPoints() {if (!fRecPoints) fRecPoints = new TObjArray(400); return fRecPoints;}
+  virtual void    AddCluster(Float_t *pos, Int_t det, Float_t amp, Int_t *tracks
+                            , Float_t *sig, Int_t iType);
+  void            ResetRecPoints() {if (fRecPoints) fRecPoints->Delete();}
+
+
  protected:
 
   AliRunLoader * fRunLoader;       //! Run Loader
   
   TTree           *fClusterTree;   //! Tree with the cluster
-  AliTRD          *fTRD;           //! The TRD object
   AliTRDparameter *fPar;           //  TRD digitization parameter object
 
-  Int_t            fEvent;         //! Event number
+  TObjArray*       fRecPoints;     //! Array of clusters
   Int_t            fVerbose;       //  Sets the verbose level
 
   ClassDef(AliTRDclusterizer,3)    //  TRD-Cluster manager base class
index 6aa516b..4722ff1 100644 (file)
 #include "AliRunLoader.h"
 #include "AliLoader.h"
 
-#include "AliTRD.h"
 #include "AliTRDclusterizerMI.h"
 #include "AliTRDmatrix.h"
 #include "AliTRDgeometry.h"
-#include "AliTRDdigitizer.h"
 #include "AliTRDdataArrayF.h"
 #include "AliTRDdataArrayI.h"
 #include "AliTRDdigitsManager.h"
@@ -132,18 +130,20 @@ Bool_t AliTRDclusterizerMI::MakeClusters()
 
   //////////////////////
   //STUPIDITY to be fixed later
-  fClusterContainer = fTRD->RecPoints();
+  fClusterContainer = RecPoints();
 
   Int_t row, col, time;
 
+  /*
   if (fTRD->IsVersion() != 1) {
     printf("<AliTRDclusterizerMI::MakeCluster> ");
     printf("TRD must be version 1 (slow simulator).\n");
     return kFALSE; 
   }
+  */
 
   // Get the geometry
-  AliTRDgeometry *geo = fTRD->GetGeometry();
+  AliTRDgeometry *geo = AliTRDgeometry::GetGeometry(fRunLoader);
 
   // Create a default parameter class if none is defined
   if (!fPar) {
@@ -195,16 +195,8 @@ Bool_t AliTRDclusterizerMI::MakeClusters()
 
   Int_t chamBeg = 0;
   Int_t chamEnd = AliTRDgeometry::Ncham();
-  if (fTRD->GetSensChamber()  >= 0) {
-    chamBeg = fTRD->GetSensChamber();
-    chamEnd = chamBeg + 1;
-  }
   Int_t planBeg = 0;
   Int_t planEnd = AliTRDgeometry::Nplan();
-  if (fTRD->GetSensPlane()    >= 0) {
-    planBeg = fTRD->GetSensPlane();
-    planEnd = planBeg + 1;
-  }
   Int_t sectBeg = 0;
   Int_t sectEnd = AliTRDgeometry::Nsect();
 
@@ -213,19 +205,6 @@ Bool_t AliTRDclusterizerMI::MakeClusters()
     for (Int_t iplan = planBeg; iplan < planEnd; iplan++) {
       for (Int_t isect = sectBeg; isect < sectEnd; isect++) {
 
-        if (fTRD->GetSensSector() >= 0) {
-          Int_t sens1 = fTRD->GetSensSector();
-          Int_t sens2 = sens1 + fTRD->GetSensSectorRange();
-          sens2 -= ((Int_t) (sens2 / AliTRDgeometry::Nsect())) 
-                 * AliTRDgeometry::Nsect();
-          if (sens1 < sens2) {
-            if ((isect < sens1) || (isect >= sens2)) continue;
-         }
-          else {
-            if ((isect < sens1) && (isect >= sens2)) continue;
-         }
-       }
-
         Int_t idet = geo->GetDetector(iplan,icham,isect);
 
         Int_t nClusters      = 0;
@@ -476,7 +455,7 @@ Bool_t AliTRDclusterizerMI::MakeClusters()
 
         // Write the cluster and reset the array
        WriteClusters(idet);
-       fTRD->ResetRecPoints();
+       ResetRecPoints();
 
         if (fVerbose > 0) {
           printf("<AliTRDclusterizerMI::MakeCluster> ");
index b836ca1..397dc1c 100644 (file)
@@ -44,7 +44,7 @@
 ClassImp(AliTRDclusterizerV0)
 
 //_____________________________________________________________________________
-AliTRDclusterizerV0::AliTRDclusterizerV0():AliTRDclusterizer()
+  AliTRDclusterizerV0::AliTRDclusterizerV0():AliTRDclusterizer(), fTRD(NULL)
 {
   //
   // AliTRDclusterizerV0 default constructor
@@ -54,7 +54,7 @@ AliTRDclusterizerV0::AliTRDclusterizerV0():AliTRDclusterizer()
 
 //_____________________________________________________________________________
 AliTRDclusterizerV0::AliTRDclusterizerV0(const Text_t* name, const Text_t* title)
-                    :AliTRDclusterizer(name,title)
+                    :AliTRDclusterizer(name,title), fTRD(NULL)
 {
   //
   // AliTRDclusterizerV0 default constructor
@@ -94,6 +94,14 @@ Bool_t AliTRDclusterizerV0::MakeClusters()
   // Generates the cluster
   //
 
+  // Get the TRD object
+  fTRD = (AliTRD*) gAlice->GetDetector("TRD"); 
+  if (!fTRD) {
+    printf("AliTRDclusterizerV0::makClusters -- ");
+    printf("No TRD detector object found\n");
+    return kFALSE;
+  }
+
   if (fTRD->IsVersion() != 0) {
     printf("AliTRDclusterizerV0::MakeCluster -- ");
     printf("TRD must be version 0 (fast simulator).\n");
@@ -278,7 +286,7 @@ Bool_t AliTRDclusterizerV0::MakeClusters()
           pos[0] = smear[1];
           pos[1] = smear[0];
           pos[2] = (time0 - smear[2]) / timeBinSize;
-          fTRD->AddCluster(pos,detector,0.0,tr,sigma,0);
+          AddCluster(pos,detector,0.0,tr,sigma,0);
 
        }
 
@@ -290,7 +298,7 @@ Bool_t AliTRDclusterizerV0::MakeClusters()
   }
 
   printf("AliTRDclusterizerV0::MakeCluster -- ");
-  printf("Found %d points.\n",fTRD->RecPoints()->GetEntries());
+  printf("Found %d points.\n",RecPoints()->GetEntries());
   printf("AliTRDclusterizerV0::MakeCluster -- ");
   printf("Fill the cluster tree.\n");
   clusterTree->Fill();
index 588c6aa..beb1c63 100644 (file)
@@ -30,6 +30,8 @@ class AliTRDclusterizerV0 : public AliTRDclusterizer {
 
  protected:
 
+  AliTRD       *fTRD;                //! The TRD object
+
   Float_t      fRphiSigma;           // Gaussian position smearing in rphi-direction
   Float_t      fRphiDist;            // Maximum distance for non-overlapping cluster
 
index eef8640..10ce516 100644 (file)
 #include "AliRunLoader.h"
 #include "AliLoader.h"
 
-#include "AliTRD.h"
 #include "AliTRDclusterizerV1.h"
 #include "AliTRDmatrix.h"
 #include "AliTRDgeometry.h"
-#include "AliTRDdigitizer.h"
 #include "AliTRDdataArrayF.h"
 #include "AliTRDdataArrayI.h"
 #include "AliTRDdigitsManager.h"
@@ -146,14 +144,16 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
 
   Int_t row, col, time;
 
+  /*
   if (fTRD->IsVersion() != 1) {
     printf("<AliTRDclusterizerV1::MakeCluster> ");
     printf("TRD must be version 1 (slow simulator).\n");
     return kFALSE; 
   }
+  */
 
   // Get the geometry
-  AliTRDgeometry *geo = fTRD->GetGeometry();
+  AliTRDgeometry *geo = AliTRDgeometry::GetGeometry(fRunLoader);
 
   // Create a default parameter class if none is defined
   if (!fPar) {
@@ -205,16 +205,8 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
 
   Int_t chamBeg = 0;
   Int_t chamEnd = AliTRDgeometry::Ncham();
-  if (fTRD->GetSensChamber()  >= 0) {
-    chamBeg = fTRD->GetSensChamber();
-    chamEnd = chamBeg + 1;
-  }
   Int_t planBeg = 0;
   Int_t planEnd = AliTRDgeometry::Nplan();
-  if (fTRD->GetSensPlane()    >= 0) {
-    planBeg = fTRD->GetSensPlane();
-    planEnd = planBeg + 1;
-  }
   Int_t sectBeg = 0;
   Int_t sectEnd = AliTRDgeometry::Nsect();
 
@@ -223,19 +215,6 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
     for (Int_t iplan = planBeg; iplan < planEnd; iplan++) {
       for (Int_t isect = sectBeg; isect < sectEnd; isect++) {
 
-        if (fTRD->GetSensSector() >= 0) {
-          Int_t sens1 = fTRD->GetSensSector();
-          Int_t sens2 = sens1 + fTRD->GetSensSectorRange();
-          sens2 -= ((Int_t) (sens2 / AliTRDgeometry::Nsect())) 
-                 * AliTRDgeometry::Nsect();
-          if (sens1 < sens2) {
-            if ((isect < sens1) || (isect >= sens2)) continue;
-         }
-          else {
-            if ((isect < sens1) && (isect >= sens2)) continue;
-         }
-       }
-
         Int_t idet = geo->GetDetector(iplan,icham,isect);
 
         Int_t nClusters      = 0;
@@ -479,12 +458,12 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
                 clusterSig[1] = rowSize * rowSize / 12.;
 
                 // Add the cluster to the output array 
-                fTRD->AddCluster(clusterPos
-                                ,idet
-                                ,clusterCharge
-                                ,clusterTracks
-                               ,clusterSig
-                                ,iType);
+                AddCluster(clusterPos
+                          ,idet
+                          ,clusterCharge
+                          ,clusterTracks
+                          ,clusterSig
+                          ,iType);
 
               }
             } 
@@ -499,7 +478,7 @@ Bool_t AliTRDclusterizerV1::MakeClusters()
 
         // Write the cluster and reset the array
        WriteClusters(idet);
-       fTRD->ResetRecPoints();
+       ResetRecPoints();
 
         if (fVerbose > 0) {
           printf("<AliTRDclusterizerV1::MakeCluster> ");
index 418935e..8ed55b3 100644 (file)
@@ -404,7 +404,7 @@ void AliTRDdigitizer::Exec(Option_t* option)
 
   //Write parameters
   orl->CdGAFile();
-  if (!gFile->Get("TRDParameter")) GetParameter()->Write();
+  if (!gFile->Get("TRDparameter")) GetParameter()->Write();
 
   if (fDebug > 0) {
     printf("<AliTRDdigitizer::Exec> ");
@@ -1501,6 +1501,10 @@ Bool_t AliTRDdigitizer::WriteDigits() const
   // Writes out the TRD-digits and the dictionaries
   //
 
+  //Write parameters
+  fRunLoader->CdGAFile();
+  if (!gFile->Get("TRDparameter")) GetParameter()->Write();
+
   // Store the digits and the dictionary in the tree
   return fDigitsManager->WriteDigits();
 
index 0cb030e..5d1e88f 100644 (file)
@@ -35,7 +35,6 @@
 #include "AliTRDdataArrayI.h"
 #include "AliTRDdigit.h"
 #include "AliTRDgeometry.h"
-#include "AliTRD.h"
 
 ClassImp(AliTRDdigitsManager)
 
@@ -186,8 +185,6 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree *tree)
 
   Bool_t status = kTRUE;
 
-  AliTRD *trd = (AliTRD *) gAlice->GetDetector("TRD") ;
-
   if (tree) {
     fTree = tree;
   }
@@ -196,8 +193,10 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree *tree)
   if (fDigits) {
     const AliTRDdataArray *kDigits = (AliTRDdataArray *) fDigits->At(0);
     if (kDigits) {
-      trd->MakeBranchInTree(fTree,"TRDdigits",kDigits->IsA()->GetName()
-                                 ,&kDigits,buffersize,99);
+      if (!fTree) return kFALSE;
+      TBranch* branch = fTree->GetBranch("TRDdigits");
+      if (!branch) fTree->Branch("TRDdigits",kDigits->IsA()->GetName(),
+                                 &kDigits,buffersize,99);
       if (fDebug > 0) {
         printf("<AliTRDdigitsManager::MakeBranch> ");
         printf("Making branch TRDdigits\n");
@@ -219,8 +218,10 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree *tree)
       const AliTRDdataArray *kDictionary = 
               (AliTRDdataArray *) fDictionary[iDict]->At(0);
       if (kDictionary) {
-        trd->MakeBranchInTree(fTree,branchname,kDictionary->IsA()->GetName()
-                             ,&kDictionary,buffersize,99);
+       if (!fTree) return kFALSE;
+       TBranch* branch = fTree->GetBranch(branchname);
+       if (!branch) fTree->Branch(branchname,kDictionary->IsA()->GetName(),
+                                  &kDictionary,buffersize,99);
         if (fDebug > 0) {
           printf("<AliTRDdigitsManager::MakeBranch> ");
           printf("Making branch %s\n",branchname);
index 8be270a..4641b32 100644 (file)
@@ -22,6 +22,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 
+#include <TError.h>
+
+#include "AliRunLoader.h"
 #include "AliTRDgeometry.h"
 #include "AliTRDparameter.h"
 
@@ -487,3 +490,26 @@ void AliTRDgeometry::SetOldGeometry()
   }
 
 }
+
+//_____________________________________________________________________________
+AliTRDgeometry* AliTRDgeometry::GetGeometry(AliRunLoader* runLoader)
+{
+  //
+  // load the geometry from the galice file
+  //
+
+  if (!runLoader) runLoader = AliRunLoader::GetRunLoader();
+  if (!runLoader) {
+    ::Error("AliTRDgeometry::GetGeometry", "No run loader");
+    return NULL;
+  }
+
+  TDirectory* saveDir = gDirectory;
+  runLoader->CdGAFile();
+
+  AliTRDgeometry* geom = (AliTRDgeometry*) gDirectory->Get("TRDgeometry");
+  if (!geom) ::Error("AliTRDgeometry::GetGeometry", "Geometry not found");
+
+  saveDir->cd();
+  return geom;
+}
index 78ac9ed..5e29aa5 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "AliGeometry.h"
 
+class AliRunLoader;
 class AliTRDparameter;
 
 class AliTRDgeometry : public AliGeometry {
@@ -84,6 +85,8 @@ class AliTRDgeometry : public AliGeometry {
  
   static  Double_t GetAlpha()  { return 2 * 3.14159265358979323846 / fgkNsect; }; 
 
+  static  AliTRDgeometry* GetGeometry(AliRunLoader* runLoader = NULL);
+
  protected:
  
   static const Int_t   fgkNsect;                            // Number of sectors in the full detector (18)
index b9dad5c..2c57264 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TRandom.h>
+
 #include "AliRun.h"
 #include "AliMagF.h"
 
-#include "AliTRD.h"
 #include "AliTRDparameter.h"
 #include "AliTRDgeometryFull.h"
 
index dd17c69..0f25a7d 100644 (file)
@@ -36,7 +36,6 @@
 #include <TParticle.h>
 
 #include "AliRun.h"
-#include "AliTRD.h"
 #include "AliTRDpid.h"
 #include "AliTRDcluster.h"
 #include "AliTRDtrack.h"
@@ -312,14 +311,7 @@ Bool_t AliTRDpid::ReadKine(const Char_t *name, Int_t event)
   }
   gAlice->GetEvent(event);
 
-  AliTRD *trd = (AliTRD *) gAlice->GetDetector("TRD");
-  if (!trd) {
-    printf("AliTRDpid::ReadKine -- ");
-    printf("No TRD object found\n");    
-    return kFALSE;
-  }
-
-  fGeometry = trd->GetGeometry();
+  fGeometry = AliTRDgeometry::GetGeometry(gAlice->GetRunLoader());
   if (!fGeometry) {
     printf("AliTRDpid::ReadKine -- ");
     printf("No TRD geometry found\n");
index 4042ec3..c89044c 100644 (file)
@@ -37,7 +37,6 @@
 #include <TParticle.h>
 
 #include "AliRun.h"
-#include "AliTRD.h"
 #include "AliTRDpidLQ.h"
 #include "AliTRDcluster.h"
 #include "AliTRDtrack.h"
index 8183394..c5353e5 100644 (file)
@@ -25,7 +25,6 @@
 
 #include "AliTRDgeometry.h"
 #include "AliTRDrecPoint.h"
-#include "AliTRD.h"
 
 ClassImp(AliTRDrecPoint)
 
@@ -38,14 +37,7 @@ AliTRDrecPoint::AliTRDrecPoint():AliRecPoint()
 
   fDetector = 0;
 
-  AliTRD *trd;
-  if ((gAlice) &&
-      (trd = ((AliTRD*) gAlice->GetDetector("TRD")))) {
-    fGeom = trd->GetGeometry();
-  }
-  else {
-    fGeom = NULL;
-  }
+  fGeom = AliTRDgeometry::GetGeometry();
 
 }
 
@@ -58,14 +50,7 @@ AliTRDrecPoint::AliTRDrecPoint(const char * opt):AliRecPoint(opt)
 
   fDetector = 0;
 
-  AliTRD *trd;
-  if ((gAlice) &&
-      (trd = ((AliTRD*) gAlice->GetDetector("TRD")))) {
-    fGeom = trd->GetGeometry();
-  }
-  else {
-    fGeom = NULL;
-  }
+  fGeom = AliTRDgeometry::GetGeometry();
 
 }
 
index 385ca7d..7d86b32 100644 (file)
@@ -25,7 +25,6 @@
 
 #include "AliRun.h"
 
-#include "AliTRD.h"
 #include "AliTRDgeometry.h"
 #include "AliTRDsegmentArray.h"
 #include "AliTRDdataArray.h"
@@ -202,7 +201,7 @@ AliTRDdataArray *AliTRDsegmentArray::GetDataArray(Int_t pla
 
   if (gAlice) {
 
-    AliTRDgeometry *geo = ((AliTRD*) gAlice->GetDetector("TRD"))->GetGeometry();  
+    AliTRDgeometry *geo = AliTRDgeometry::GetGeometry(gAlice->GetRunLoader());  
     Int_t det = geo->GetDetector(pla,cha,sec);
     return GetDataArray(det);
 
index 5c0d78a..be33309 100644 (file)
@@ -21,7 +21,6 @@
 #include "AliTRDgeometry.h" 
 #include "AliTRDcluster.h" 
 #include "AliTRDtrack.h"
-#include "../TPC/AliTPCtrack.h" 
 #include "AliESDtrack.h" 
 #include "AliTRDclusterCorrection.h"
 
index eaaf6b2..f2764bc 100644 (file)
@@ -16,7 +16,6 @@ class AliTRDgeometry;
 class AliTRDparameter;
 class AliTRDtrack;
 class AliTRDcluster;
-class AliTRDmcTrack;
 class AliBarrelTrack;
 class AliESD;
 
index 5ff297e..72a4dc2 100644 (file)
@@ -41,7 +41,6 @@
 #include "AliRun.h"
 #include "AliTRDgeometry.h"
 #include "AliTRDhit.h"
-#include "AliTRDmatrix.h"
 #include "AliTRDsim.h"
 #include "AliTRDv1.h"
 #include "AliMC.h"
diff --git a/TRD/TRDLinkDef.h b/TRD/TRDLinkDef.h
deleted file mode 100644 (file)
index 10a6427..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifdef __CINT__
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-#pragma link C++ class  AliTRD+;
-#pragma link C++ class  AliTRDv0+;
-#pragma link C++ class  AliTRDv1+;
-#pragma link C++ class  AliTRDv2+;
-#pragma link C++ class  AliTRDhit+;
-#pragma link C++ class  AliTRDdigit+;
-#pragma link C++ class  AliTRDdigitsManager+;
-#pragma link C++ class  AliTRDpixel+;
-#pragma link C++ class  AliTRDmatrix+;
-#pragma link C++ class  AliTRDgeometry+;
-#pragma link C++ class  AliTRDgeometryFull+;
-#pragma link C++ class  AliTRDgeometryHole+;
-#pragma link C++ class  AliTRDgeometryDetail+;
-#pragma link C++ class  AliTRDdigitizer+;
-#pragma link C++ class  AliTRDclusterizer+;
-#pragma link C++ class  AliTRDclusterizerV0+;
-#pragma link C++ class  AliTRDclusterizerV1+;
-#pragma link C++ class  AliTRDclusterizerMI+;
-#pragma link C++ class  AliTRDclusterCorrection+;
-
-#pragma link C++ class  AliTRDrecPoint+;
-#pragma link C++ class  AliTRDsegmentArray+;
-#pragma link C++ class  AliTRDdataArray+;
-#pragma link C++ class  AliTRDdataArrayI+;
-#pragma link C++ class  AliTRDdataArrayF+;
-#pragma link C++ class  AliTRDsim+;
-#pragma link C++ class  AliTRDpoints+;
-#pragma link C++ class  AliTRDtrack+;
-#pragma link C++ class  AliTRDtracker+;
-#pragma link C++ class  AliTRDtrackHits+;
-#pragma link C++ class  AliTRDcluster+;
-#pragma link C++ class  AliTRDclusterMI+;
-
-#pragma link C++ class  AliTRDpid+;
-#pragma link C++ class  AliTRDpidLQ+;
-#pragma link C++ class  AliTRDmcTrack+;
-#pragma link C++ class  AliTRDsimple+;
-#pragma link C++ class  AliTRDsimpleMC+;
-#pragma link C++ class  AliTRDsimpleGen+;
-#pragma link C++ class  AliTRDsegmentID+;
-#pragma link C++ class  AliTRDsegmentArrayBase+;
-#pragma link C++ class  AliTRDarrayI+;
-#pragma link C++ class  AliTRDarrayF+;
-#pragma link C++ class  AliTRDparameter+;
-#pragma link C++ class  AliTRDPartID+;
-
-#pragma link C++ class  AliTRDReconstructor+;
-
-#endif
diff --git a/TRD/TRDbaseLinkDef.h b/TRD/TRDbaseLinkDef.h
new file mode 100644 (file)
index 0000000..87aef11
--- /dev/null
@@ -0,0 +1,31 @@
+#ifdef __CINT__
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link C++ class  AliTRDarrayI+;
+#pragma link C++ class  AliTRDarrayF+;
+#pragma link C++ class  AliTRDsegmentID+;
+
+#pragma link C++ class  AliTRDdataArray+;
+#pragma link C++ class  AliTRDdataArrayI+;
+#pragma link C++ class  AliTRDdataArrayF+;
+
+#pragma link C++ class  AliTRDsegmentArrayBase+;
+#pragma link C++ class  AliTRDsegmentArray+;
+
+#pragma link C++ class  AliTRDgeometry+;
+#pragma link C++ class  AliTRDgeometryFull+;
+#pragma link C++ class  AliTRDgeometryHole+;
+#pragma link C++ class  AliTRDgeometryDetail+;
+#pragma link C++ class  AliTRDparameter+;
+
+#pragma link C++ class  AliTRDdigit+;
+#pragma link C++ class  AliTRDdigitsManager+;
+
+#endif
diff --git a/TRD/TRDfastLinkDef.h b/TRD/TRDfastLinkDef.h
new file mode 100644 (file)
index 0000000..b6f6819
--- /dev/null
@@ -0,0 +1,13 @@
+#ifdef __CINT__
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link C++ class  AliTRDclusterizerV0+;
+
+#endif
diff --git a/TRD/TRDrecLinkDef.h b/TRD/TRDrecLinkDef.h
new file mode 100644 (file)
index 0000000..913e21c
--- /dev/null
@@ -0,0 +1,33 @@
+#ifdef __CINT__
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link C++ class  AliTRDpixel+;
+#pragma link C++ class  AliTRDmatrix+;
+
+#pragma link C++ class  AliTRDrecPoint+;
+#pragma link C++ class  AliTRDcluster+;
+#pragma link C++ class  AliTRDclusterMI+;
+
+#pragma link C++ class  AliTRDclusterizer+;
+#pragma link C++ class  AliTRDclusterizerV1+;
+
+#pragma link C++ class  AliTRDclusterCorrection+;
+#pragma link C++ class  AliTRDclusterizerMI+;
+
+#pragma link C++ class  AliTRDtrack+;
+#pragma link C++ class  AliTRDtracker+;
+
+#pragma link C++ class  AliTRDpid+;
+#pragma link C++ class  AliTRDpidLQ+;
+#pragma link C++ class  AliTRDPartID+;
+
+#pragma link C++ class  AliTRDReconstructor+;
+
+#endif
diff --git a/TRD/TRDsimLinkDef.h b/TRD/TRDsimLinkDef.h
new file mode 100644 (file)
index 0000000..34de4b6
--- /dev/null
@@ -0,0 +1,28 @@
+#ifdef __CINT__
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link C++ class  AliTRDhit+;
+#pragma link C++ class  AliTRDtrackHits+;
+#pragma link C++ class  AliTRDpoints+;
+
+#pragma link C++ class  AliTRDsim+;
+#pragma link C++ class  AliTRD+;
+#pragma link C++ class  AliTRDv0+;
+#pragma link C++ class  AliTRDv1+;
+#pragma link C++ class  AliTRDv2+;
+
+#pragma link C++ class  AliTRDmcTrack+;
+#pragma link C++ class  AliTRDsimple+;
+#pragma link C++ class  AliTRDsimpleMC+;
+#pragma link C++ class  AliTRDsimpleGen+;
+
+#pragma link C++ class  AliTRDdigitizer+;
+
+#endif
diff --git a/TRD/libTRD.pkg b/TRD/libTRD.pkg
deleted file mode 100644 (file)
index 932ad13..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-SRCS= AliTRD.cxx \
-      AliTRDv0.cxx \
-      AliTRDv1.cxx \
-      AliTRDv2.cxx \
-      AliTRDhit.cxx \
-      AliTRDdigit.cxx \
-      AliTRDpixel.cxx \
-      AliTRDmatrix.cxx \
-      AliTRDgeometry.cxx \
-      AliTRDgeometryFull.cxx \
-      AliTRDgeometryDetail.cxx \
-      AliTRDgeometryHole.cxx \
-      AliTRDdigitizer.cxx \
-      AliTRDclusterizer.cxx \
-      AliTRDclusterizerV0.cxx \
-      AliTRDclusterizerV1.cxx \
-      AliTRDrecPoint.cxx \
-      AliTRDsegmentArray.cxx \
-      AliTRDdataArray.cxx \
-      AliTRDdataArrayI.cxx \
-      AliTRDdataArrayF.cxx \
-      AliTRDdigitsManager.cxx \
-      AliTRDsim.cxx \
-      AliTRDsegmentID.cxx \
-      AliTRDsegmentArrayBase.cxx \
-      AliTRDarrayI.cxx \
-      AliTRDarrayF.cxx \
-      AliTRDpoints.cxx \
-      AliTRDtrack.cxx \
-      AliTRDtracker.cxx \
-      AliTRDtrackHits.cxx \
-      AliTRDcluster.cxx \
-      AliTRDpid.cxx \
-      AliTRDpidLQ.cxx \
-      AliTRDmcTrack.cxx \
-      AliTRDsimple.cxx \
-      AliTRDsimpleMC.cxx \
-      AliTRDsimpleGen.cxx \
-      AliTRDparameter.cxx \
-      AliTRDPartID.cxx    \
-      AliTRDclusterMI.cxx      \
-      AliTRDclusterizerMI.cxx  \
-      AliTRDclusterCorrection.cxx \
-      AliTRDReconstructor.cxx
-
-HDRS= $(SRCS:.cxx=.h)                
-
-DHDR= TRDLinkDef.h
diff --git a/TRD/libTRDbase.pkg b/TRD/libTRDbase.pkg
new file mode 100644 (file)
index 0000000..8821725
--- /dev/null
@@ -0,0 +1,19 @@
+SRCS= AliTRDarrayI.cxx \
+      AliTRDarrayF.cxx \
+      AliTRDsegmentID.cxx \
+      AliTRDdataArray.cxx \
+      AliTRDdataArrayI.cxx \
+      AliTRDdataArrayF.cxx \
+      AliTRDsegmentArrayBase.cxx \
+      AliTRDsegmentArray.cxx \
+      AliTRDgeometry.cxx \
+      AliTRDgeometryFull.cxx \
+      AliTRDgeometryDetail.cxx \
+      AliTRDgeometryHole.cxx \
+      AliTRDparameter.cxx \
+      AliTRDdigit.cxx \
+      AliTRDdigitsManager.cxx
+
+HDRS= $(SRCS:.cxx=.h)                
+
+DHDR= TRDbaseLinkDef.h
diff --git a/TRD/libTRDfast.pkg b/TRD/libTRDfast.pkg
new file mode 100644 (file)
index 0000000..7d8bacc
--- /dev/null
@@ -0,0 +1,5 @@
+SRCS= AliTRDclusterizerV0.cxx
+
+HDRS= $(SRCS:.cxx=.h)                
+
+DHDR= TRDfastLinkDef.h
diff --git a/TRD/libTRDrec.pkg b/TRD/libTRDrec.pkg
new file mode 100644 (file)
index 0000000..dd1272f
--- /dev/null
@@ -0,0 +1,19 @@
+SRCS= AliTRDpixel.cxx \
+      AliTRDmatrix.cxx \
+      AliTRDrecPoint.cxx \
+      AliTRDcluster.cxx \
+      AliTRDclusterMI.cxx \
+      AliTRDclusterizer.cxx \
+      AliTRDclusterizerV1.cxx \
+      AliTRDclusterCorrection.cxx \
+      AliTRDclusterizerMI.cxx \
+      AliTRDtrack.cxx \
+      AliTRDtracker.cxx \
+      AliTRDpid.cxx \
+      AliTRDpidLQ.cxx \
+      AliTRDPartID.cxx \
+      AliTRDReconstructor.cxx
+
+HDRS= $(SRCS:.cxx=.h)                
+
+DHDR= TRDrecLinkDef.h
diff --git a/TRD/libTRDsim.pkg b/TRD/libTRDsim.pkg
new file mode 100644 (file)
index 0000000..72c0630
--- /dev/null
@@ -0,0 +1,17 @@
+SRCS= AliTRDhit.cxx \
+      AliTRDtrackHits.cxx \
+      AliTRDpoints.cxx \
+      AliTRDsim.cxx \
+      AliTRD.cxx \
+      AliTRDv0.cxx \
+      AliTRDv1.cxx \
+      AliTRDv2.cxx \
+      AliTRDmcTrack.cxx \
+      AliTRDsimple.cxx \
+      AliTRDsimpleMC.cxx \
+      AliTRDsimpleGen.cxx \
+      AliTRDdigitizer.cxx
+
+HDRS= $(SRCS:.cxx=.h)                
+
+DHDR= TRDsimLinkDef.h
index 1d99514..19a3014 100644 (file)
@@ -42,6 +42,7 @@ TMEVSIM/module.mk:     TMEVSIM/libTMEVSIM.pkg
 TOF/module.mk:          TOF/libTOF.pkg
 TPC/module.mk:          TPC/libTPCbase.pkg TPC/libTPCsim.pkg TPC/libTPCrec.pkg TPC/libTPCfast.pkg
 TPHIC/module.mk:        TPHIC/libTPHIC.pkg
-TRD/module.mk:          TRD/libTRD.pkg
+TRD/module.mk:          TRD/libTRDbase.pkg TRD/libTRDsim.pkg TRD/libTRDrec.pkg TRD/libTRDfast.pkg
 VZERO/module.mk:        VZERO/libVZERO.pkg
 ZDC/module.mk:          ZDC/libZDC.pkg
+TRACKING/module.mk:      TRACKING/libTRACKING.pkg