new PID 2dLQ implementation to fix bug 54540
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 11 Dec 2009 09:56:59 +0000 (09:56 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 11 Dec 2009 09:56:59 +0000 (09:56 +0000)
TRD/AliTRDseedV1.cxx
TRD/Cal/AliTRDCalPID.h
TRD/Cal/AliTRDCalPIDLQ.cxx
TRD/Cal/AliTRDCalPIDLQ.h
TRD/Cal/AliTRDCalPIDNN.cxx
TRD/Cal/AliTRDCalPIDNN.h
TRD/Macros/AliTRDpidCDB.C
TRD/libTRDbase.pkg

index a1ab576..8456898 100644 (file)
@@ -387,13 +387,10 @@ void AliTRDseedV1::CookdEdx(Int_t nslices)
 // 3. cluster size
 //
 
-  Int_t nclusters[kNslices]; 
-  memset(nclusters, 0, kNslices*sizeof(Int_t));
   memset(fdEdx, 0, kNslices*sizeof(Float_t));
-
   const Double_t kDriftLength = (.5 * AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick());
 
-  AliTRDcluster *c = NULL;
+  AliTRDcluster *c(NULL);
   for(int ic=0; ic<AliTRDtrackerV1::GetNTimeBins(); ic++){
     if(!(c = fClusters[ic]) && !(c = fClusters[ic+kNtb])) continue;
     Float_t dx = TMath::Abs(fX0 - c->GetX());
@@ -415,16 +412,7 @@ void AliTRDseedV1::CookdEdx(Int_t nslices)
     
     //CHECK !!!
     fdEdx[slice]   += w * GetdQdl(ic); //fdQdl[ic];
-    nclusters[slice]++;
   } // End of loop over clusters
-
-  //if(fkReconstructor->GetPIDMethod() == AliTRDReconstructor::kLQPID){
-  if(nslices == AliTRDpidUtil::kLQslices){
-  // calculate mean charge per slice (only LQ PID)
-    for(int is=0; is<nslices; is++){ 
-      if(nclusters[is]) fdEdx[is] /= nclusters[is];
-    }
-  }
 }
 
 //_____________________________________________________________________________
@@ -593,8 +581,8 @@ Bool_t AliTRDseedV1::CookPID()
   Float_t length = (AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick())/ TMath::Sqrt((1.0 - GetSnp()*GetSnp()) / (1.0 + GetTgl()*GetTgl()));
   
   //calculate dE/dx
-  CookdEdx(fkReconstructor->GetNdEdxSlices());
-  AliDebug(4, Form("PID p[%f] dEdx[%7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f] l[%f]", GetMomentum(), fdEdx[0], fdEdx[1], fdEdx[2], fdEdx[3], fdEdx[4], fdEdx[5], fdEdx[6], fdEdx[7], length));
+  CookdEdx(AliTRDCalPID::kNSlicesNN);
+  AliDebug(4, Form("p=%6.4f[GeV/c] dEdx{%7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f} l=%4.2f[cm]", GetMomentum(), fdEdx[0], fdEdx[1], fdEdx[2], fdEdx[3], fdEdx[4], fdEdx[5], fdEdx[6], fdEdx[7], length));
 
   // Sets the a priori probabilities
   for(int ispec=0; ispec<AliPID::kSPECIES; ispec++)
index 1c53ad3..dee363f 100644 (file)
@@ -26,7 +26,7 @@ class AliTRDCalPID : public TNamed
 
   enum {
     kNMom   = 11,
-    kNSlicesLQ = 3,
+    kNSlicesLQ = 2,
     kNSlicesNN = 8
   };
 
@@ -40,6 +40,7 @@ class AliTRDCalPID : public TNamed
   static  Double_t GetMomentumBinning(Int_t ip) { 
     return (ip<0 || ip>=kNMom+1) ? -1.0 : fgTrackMomentumBinning[ip]; }
   virtual TObject *GetModel(Int_t ip, Int_t iType, Int_t iPlane) const = 0;
+  //virtual static Int_t GetModelID(Int_t mom, Int_t spec, Int_t plane) = 0;
   virtual Double_t GetProbability(Int_t spec, Float_t mom
                                 , const Float_t * const dedx
                                 , Float_t length, Int_t plane) const = 0;
@@ -52,9 +53,7 @@ class AliTRDCalPID : public TNamed
           void     SetPartSymb(Int_t i, const Char_t *symb) { fPartSymb[i] = symb;   }
 
  protected:
-
   virtual void     Init() = 0;
-  virtual Int_t    GetModelID(Int_t mom, Int_t spec, Int_t plane) const = 0;
 
   static const Char_t   *fPartName[AliPID::kSPECIES];     //! Names of particle species
   static const Char_t   *fPartSymb[AliPID::kSPECIES];     //! Symbols of particle species
index f464e51..910e2d0 100644 (file)
 //                                                                      //
 //////////////////////////////////////////////////////////////////////////
 
-#include <TH2F.h>
 #include <TFile.h>
 #include <TROOT.h>
+#include <TSystem.h>
 
 #include "AliLog.h"
 #include "AliPID.h"
 
-#include "../../STAT/TKDPDF.h"
+#include "TKDPDF.h"
 #include "AliTRDCalPIDLQ.h"
 #include "AliTRDcalibDB.h"
 
@@ -65,85 +65,30 @@ AliTRDCalPIDLQ::AliTRDCalPIDLQ(const Text_t *name, const Text_t *title)
 
 }
 
-//_________________________________________________________________________
-AliTRDCalPIDLQ::~AliTRDCalPIDLQ()
-{
-  //
-  // Destructor
-  //
-  
-}
 
 //_________________________________________________________________________
-Bool_t AliTRDCalPIDLQ::LoadPDF(TDirectoryFile *d)
-{
-  // Read histograms
-  TKDPDF *pdf = 0x0;
-  for (Int_t is=0; is < AliPID::kSPECIES; is++){
-    for (Int_t ip = 0; ip < kNMom; ip++){
-      if(!(pdf = (TKDPDF*)d->Get(Form("%s[%d]", AliPID::ParticleShortName(is), ip)))){ 
-        AliWarning(Form("Reference for %s[%d] missing.", AliPID::ParticleShortName(is), ip));
-        continue;
-      }
-      fModel->AddAt(pdf->Clone(), GetModelID(ip, is, 0));
-    }
-  }
-  return kTRUE;
-}
-  //
-//_________________________________________________________________________
 Bool_t AliTRDCalPIDLQ::LoadReferences(Char_t *refFile)
 {
   //
   // Read the TRD dEdx histograms.
   //
 
-  Int_t nTimeBins = 22;
-  // Get number of time bins from CDB
-  AliTRDcalibDB *calibration = AliTRDcalibDB::Instance();
-  if(!calibration){
-    AliWarning(Form("No AliTRDcalibDB available. Using %d time bins.", nTimeBins));
-  }else{
-    if(calibration->GetRun() > -1) nTimeBins = calibration->GetNumberOfTimeBinsDCS();
-    else AliWarning(Form("Run number not set. Using %d time bins.", nTimeBins));
+  if(gSystem->AccessPathName(refFile, kReadPermission)){
+    AliError(Form("File %s.root not readable", refFile));
+    return kFALSE;
   }
-
-  
-  // Read histogram Root file  
-  TFile *histFile = TFile::Open(refFile, "READ");
-  if (!histFile || !histFile->IsOpen()) {
-    AliError(Form("Opening TRD histgram file %s failed", refFile));
+  if(!TFile::Open(refFile)){
+    AliError(Form("File %s corrupted", refFile));
     return kFALSE;
   }
-  gROOT->cd();
-
-  // Read histograms
-  for (Int_t iparticle = 0; iparticle < AliPID::kSPECIES; iparticle++){
-    for (Int_t imom = 0; imom < kNMom; imom++){
-      TH2D* hist = (TH2D*)histFile->Get(Form("h2dEdx%s%d", fPartSymb[iparticle], imom/*, ilength*/))->Clone();
-      hist->Scale(1./hist->Integral());
-      fModel->AddAt(hist, GetModelID(imom, iparticle, 0));
-
-//                     if (iparticle != AliPID::kElectron && iparticle != AliPID::kPion) continue;
-// 
-//                     TH1F* ht = (TH1F*)histFile->Get(Form("h1MaxTB%s%02d", fPartSymb[iparticle], imom))->Clone();
-//                     if(ht->GetNbinsX() != nTimeBins) AliWarning(Form("The number of time bins %d defined in h1MaxTB%s%02d differs from calibration value of %d. This may lead to erroneous results.", ht->GetNbinsX(), fPartSymb[iparticle], imom, nTimeBins));
-//                     ht->Scale(1./ht->Integral());
-//                     fHistTimeBin->AddAt(ht, ((iparticle==AliPID::kElectron)?0:1)*kNMom + imom);
-    }
+  TObjArray *pdf(NULL);
+  if (!( pdf = dynamic_cast<TObjArray*>(gFile->Get("PDF_2DLQ")))) {
+    AliError("PID data not available");
+    return kFALSE;
   }
-  
-  histFile->Close();
-  delete histFile;
-  
-  // Number of bins and bin size
-  //TH1F* hist = (TH1F*) fHistdEdx->At(GetHistID(AliPID::kPion, 1));
-  //fNbins   = hist->GetNbinsX();
-  //fBinSize = hist->GetBinWidth(1);
-  
+  fModel=(TObjArray*)pdf->Clone("PDF");
+  gFile->Close();
   return kTRUE;
-
-
 }
 
 //_________________________________________________________________________
@@ -153,11 +98,10 @@ TObject* AliTRDCalPIDLQ::GetModel(Int_t ip, Int_t iType, Int_t iplane) const
   // Returns one selected dEdx histogram
   //
 
-  if (iType < 0 || iType >= AliPID::kSPECIES) return 0x0;
-  if(ip<0 || ip>= kNMom ) return 0x0;
+  if (iType < 0 || iType >= AliPID::kSPECIES) return NULL;
+  if(ip<0 || ip>= kNMom ) return NULL;
 
-  AliInfo(Form("Retrive dEdx histogram for %s of %5.2f GeV/c", fPartName[iType], fgTrackMomentum[ip]));
-  
+  AliDebug(2, Form("Retrive dEdx distribution for %s @ p=%5.2f [GeV/c].", AliPID::ParticleShortName(iType), fgTrackMomentum[ip]));
   return fModel->At(GetModelID(ip, iType, iplane));
 }
 
@@ -174,77 +118,54 @@ Double_t AliTRDCalPIDLQ::GetProbability(Int_t spec, Float_t mom
   //
 
   if (spec < 0 || spec >= AliPID::kSPECIES) return 0.;
+  Double_t x[AliTRDCalPID::kNSlicesLQ];
+  if(!CookdEdx(dedx, x)) return 0.;
     
-  //Double_t dedx   = dedx1/fMeanChargeRatio;
-  
   // find the interval in momentum and track segment length which applies for this data
-  Int_t ilength = 1;
+/*  Int_t ilength = 1;
   while(ilength<kNLength-1 && length>fgTrackSegLength[ilength]){
     ilength++;
-  }
+  }*/
   Int_t imom = 1;
   while(imom<kNMom-1 && mom>fgTrackMomentum[imom]) imom++;
 
-  Int_t nbinsx, nbinsy;
-  TAxis *ax = 0x0, *ay = 0x0;
-  Double_t lq1, lq2;
-  Double_t mom1 = fgTrackMomentum[imom-1], mom2 = fgTrackMomentum[imom];
-  TH2 *hist = 0x0;
-  if(!(hist = (TH2D*)fModel->At(GetModelID(imom-1, spec, iplane)))){
-    AliInfo(Form("Looking for spec(%d) mom(%f) Ex(%f) Ey(%f) length(%f)", spec, mom, dedx[0], dedx[1], length));
-    AliError(Form("EHistogram id %d not found in DB.", GetModelID(imom-1, spec, iplane)));
+  Double_t p[2], e[2], r;
+  TKDPDF *pdf(NULL);
+
+  AliDebug(2, Form("Looking for %s@p=%6.4f[GeV/c] dEdx={%7.2f %7.2f}[a.u.] l=%4.2f[cm].", AliPID::ParticleShortName(spec), mom, dedx[0], dedx[1], length));
+  if(!(pdf = dynamic_cast<TKDPDF*>(fModel->At(GetModelID(imom-1, spec, iplane))))) {
+    AliError(Form("Ref data @ idx[%d] not found in DB.", GetModelID(imom-1, spec, iplane)));
+    fModel->ls();
     return 0.;
   }
-  ax = hist->GetXaxis(); nbinsx = ax->GetNbins();
-  ay = hist->GetYaxis(); nbinsy = ay->GetNbins();
-  Float_t x = dedx[0]+dedx[1], y = dedx[2];
-        Bool_t kX = (x < ax->GetBinUpEdge(nbinsx));
-  Bool_t kY = (y < ay->GetBinUpEdge(nbinsy));
-  if(kX)
-    if(kY) lq1 = hist->GetBinContent( hist->FindBin(x, y)); 
-    //fEstimator->Estimate2D2(hist, x, y);
-    else lq1 = hist->GetBinContent(ax->FindBin(x), nbinsy);
-  else
-    if(kY) lq1 = hist->GetBinContent(nbinsx, ay->FindBin(y));
-    else lq1 = hist->GetBinContent(nbinsx, nbinsy);
-
-
-  if(!(hist = (TH2D*)fModel->At(GetModelID(imom, spec, iplane)))){
-    AliInfo(Form("Looking for spec(%d) mom(%f) Ex(%f) Ey(%f) length(%f)", spec, mom, dedx[0], dedx[1], length));
-    AliError(Form("EHistogram id %d not found in DB.", GetModelID(imom, spec, iplane)));
-    return lq1;
+  pdf->Eval(x, r, e[0], kFALSE);
+  p[0]=TMath::Abs(r); // conversion from interpolation to PDF
+  AliDebug(2, Form("LQ=%6.3f+-%5.2f%% @ %4.1f[GeV/c]", p[0], 1.E2*e[0]/p[0], fgTrackMomentum[imom-1]));
+
+  if(!(pdf = dynamic_cast<TKDPDF*>(fModel->At(GetModelID(imom, spec, iplane))))){
+    AliError(Form("Ref data @ idx[%d] not found in DB.", GetModelID(imom, spec, iplane)));
+    fModel->ls();
+    return p[0];
   }
-  if(kX)
-    if(kY) lq2 = hist->GetBinContent( hist->FindBin(x, y)); 
-    //fEstimator->Estimate2D2(hist, x, y);
-    else lq2 = hist->GetBinContent(ax->FindBin(x), nbinsy);
-  else
-    if(kY) lq2 = hist->GetBinContent(nbinsx, ay->FindBin(y));
-    else lq2 = hist->GetBinContent(nbinsx, nbinsy);
+  pdf->Eval(x, r, e[1], kFALSE);
+  p[1]=TMath::Abs(r); // conversion from interpolation to PDF
+  AliDebug(2, Form("LQ=%6.3f+-%5.2f%% @ %4.1f[GeV/c]", p[1], 1.E2*e[1]/p[1], fgTrackMomentum[imom]));
   
-        // return interpolation over momentum binning
-        if(mom < fgTrackMomentum[0]) return lq1;
-        else if(mom > fgTrackMomentum[kNMom-1]) return lq2;
-        else return lq1 + (lq2 - lq1)*(mom - mom1)/(mom2 - mom1);
-
+  // return interpolation over momentum binning
+  if(mom < fgTrackMomentum[0]) return p[0];
+  else if(mom > fgTrackMomentum[kNMom-1]) return p[1];
+  else{ 
+    Double_t lmom[2] = {fgTrackMomentum[imom-1],  fgTrackMomentum[imom]};
+    return p[0] + (p[1] - p[0])*(mom - lmom[0])/(lmom[1] - lmom[0]);
+  }
 }
 
 //_________________________________________________________________________
 void AliTRDCalPIDLQ::Init()
 {
-  //
-  // Initialization
-  //
-
+//
+// PID LQ list initialization
+//
   fModel = new TObjArray(AliPID::kSPECIES  * kNMom);
   fModel -> SetOwner();
-
-}
-
-//_________________________________________________________________________
-Int_t AliTRDCalPIDLQ::GetModelID(Int_t mom, Int_t spec, Int_t /*ii*/) const
-{  
-  // returns the ID of the LQ distribution (55 Histos, ID from 1 to 55)
-
-  return spec * AliTRDCalPID::kNMom + mom;
 }
index 69304e6..c2b9424 100644 (file)
 //                                                                        //          
 ////////////////////////////////////////////////////////////////////////////
 
+#ifndef ALITRDCALPID_H
 #include "AliTRDCalPID.h"
+#endif
+#ifndef ROOT_TMath
+#include "TMath.h"
+#endif
 
-class TDirectoryFile;
 class AliTRDCalPIDLQ : public AliTRDCalPID
 {
-
- public:
-
-  enum {
-    kNLength = 4
+public:
+  enum ETRDCalPIDLQ {
+    kNLength = 4 // No of bins for tracklet length discretization 
+   ,kNN2LQtransition = 4 // index of NN slices where first LQ slice ends 
   };
        
   AliTRDCalPIDLQ();
   AliTRDCalPIDLQ(const Text_t *name, const Text_t *title);
-  virtual        ~AliTRDCalPIDLQ();
+  virtual        ~AliTRDCalPIDLQ(){};
 
-  Bool_t          LoadPDF(TDirectoryFile *);
-  Bool_t          LoadReferences(Char_t* refFile);
-  TObject*        GetModel(Int_t ip, Int_t iType, Int_t iPlane) const;
-  static Double_t GetLength(Int_t il) { return (il<0 || il>=kNLength) ? -1. : fgTrackSegLength[il]; }
-         Double_t GetProbability(Int_t spec, Float_t mom
+  inline static Bool_t  CookdEdx(const Float_t * const dedx, Double_t *x);
+  TObject*              GetModel(Int_t ip, Int_t iType, Int_t iPlane) const;
+  static Double_t       GetLength(Int_t il) { return (il<0 || il>=kNLength) ? -1. : fgTrackSegLength[il]; }
+  inline static Int_t   GetModelID(Int_t mom, Int_t spec, Int_t ii=-1);
+  Double_t              GetProbability(Int_t spec, Float_t mom
                                , const Float_t * const dedx
                                , Float_t length, Int_t plane) const;
+  Bool_t                LoadReferences(Char_t* refFile);
 
- protected:
-
+protected:
   static Float_t  fgTrackSegLength[kNLength]; // Track segment lengths
 
- private:
-
+private:
   AliTRDCalPIDLQ(const AliTRDCalPIDLQ& pd);
   AliTRDCalPIDLQ&   operator=(const AliTRDCalPIDLQ &c);
-
-  void     Init();
-  Int_t    GetModelID(Int_t mom, Int_t spec, Int_t ii) const;
+  void      Init();
 
   ClassDef(AliTRDCalPIDLQ, 2)                 // LQ PID reference manager
-
 };
+
+//_________________________________________________________________________
+inline Int_t AliTRDCalPIDLQ::GetModelID(Int_t mom, Int_t spec, Int_t /*ii*/)
+{  
+// Returns the ID of the PDF distribution 
+// 5 species * 11 momentum ranges
+
+  return spec * AliTRDCalPID::kNMom + mom;
+}
+
+//_________________________________________________________________________
+inline Bool_t  AliTRDCalPIDLQ::CookdEdx(const Float_t * const dedx, Double_t *x)
+{
+// Convert NN dEdx slices to the representation used by LQ
+
+  x[0]=0.;x[1]=0.;
+  for(Int_t islice=AliTRDCalPID::kNSlicesNN; islice--;){
+    Int_t jslice = islice>kNN2LQtransition;
+    x[jslice]+=dedx[islice];
+  }
+  
+  // check data integrity
+  if(x[0]<1.e-30) return kFALSE;
+  if(x[1]<1.e-30) return kFALSE;
+
+  x[0] = TMath::Log(x[0]);
+  x[1] = TMath::Log(x[1]);
+  return kTRUE;
+}
+
 #endif
 
index ac1e3b3..87382bd 100644 (file)
@@ -204,7 +204,7 @@ void AliTRDCalPIDNN::Init()
 }
 
 //_________________________________________________________________________
-Int_t AliTRDCalPIDNN::GetModelID(Int_t mom, Int_t /*ii*/, Int_t plane) const
+Int_t AliTRDCalPIDNN::GetModelID(Int_t mom, Int_t /*ii*/, Int_t plane)
 {
   
   // returns the ID of the NN distribution (66 MLPs, ID from 56 to 121)
index e165c67..85f8fd0 100644 (file)
@@ -29,6 +29,7 @@ class AliTRDCalPIDNN : public AliTRDCalPID
   virtual  ~AliTRDCalPIDNN();
   Bool_t    LoadReferences(Char_t *refFile);
   TObject  *GetModel(Int_t ip, Int_t iType, Int_t iPlane) const;
+  static Int_t GetModelID(Int_t mom, Int_t ii, Int_t plane);
   Double_t  GetProbability(Int_t spec, Float_t mom
                          , const Float_t * const dedx
                          , Float_t length, Int_t plane) const;
@@ -39,7 +40,6 @@ class AliTRDCalPIDNN : public AliTRDCalPID
   AliTRDCalPIDNN &operator=(const AliTRDCalPIDNN &c);
            
   void     Init();
-  Int_t    GetModelID(Int_t mom, Int_t ii, Int_t plane) const;
 
   ClassDef(AliTRDCalPIDNN, 1) // NN PID reference manager
 
index b0c4871..3ed1123 100644 (file)
@@ -5,26 +5,9 @@
 // 
 
 
-//___________________________________________________________________
-void makePIDRefs(const char *dir = ".", const char *file="Refs.root")
-{
-// Build the reference data for PID. The simulations have to fulfill
-// the directory structure defined inside AliTRDCalPIDRefMaker.
-// Parameters:
-// 1. "dir" - the root directory of the production
-// 2. "file" - output file containing reference data saved in directory
-//             "dir" 
-
-  AliCDBManager *man = AliCDBManager::Instance();
-  man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
-  man->SetRun(0);
-
-  AliTRDCalPIDRefMaker maker;
-  maker.BuildLQReferences(file, dir);
-}
 
 //___________________________________________________________________
-void generatePIDDB()
+void generatePIDDBLQ(const char *file = "TRD.CalibPIDrefMakerLQ.root")
 {
 // Write TRD PID DB using the reference data from file "file"
 
@@ -37,15 +20,16 @@ void generatePIDDB()
   AliCDBStorage *gStorLoc = man->GetStorage("local://$ALICE_ROOT/OCDB");
   if (!gStorLoc) return;
 
-  AliTRDpidRefMakerLQ pidMaker;
-  TObject *o = pidMaker.GetOCDBEntry("20091101");
+  if(gSystem->Load("libSTAT.so")<0) return;
+  AliTRDCalPID *pid = new AliTRDCalPIDLQ("pidLQ", "LQ TRD PID object");    
+  if(!pid->LoadReferences(file)) return;
   AliCDBMetaData *md= new AliCDBMetaData();
   md->SetObjectClassName("AliTRDCalPIDLQ");
   md->SetResponsible("Alexandru Bercuci");
   md->SetBeamPeriod(1);
-  md->SetAliRootVersion("v4-16-Release"); //root version
+  md->SetAliRootVersion("v4-17-Release"); //root version
   md->SetComment("2D PID for TRD");
-  gStorLoc->Put(o, AliCDBId("TRD/Calib/PIDLQ", 0, 999999999, 0, 1), md, AliCDBManager::kReference);
+  gStorLoc->Put(pid, AliCDBId("TRD/Calib/PIDLQ", 0, 999999999, 0, 1), md, AliCDBManager::kReference);
 }
 
 //___________________________________________________________________
index b59e7b6..aabeba4 100644 (file)
@@ -71,8 +71,9 @@ HDRS= $(SRCS:.cxx=.h)
 
 DHDR= TRDbaseLinkDef.h
 
-EINCLUDE:= RAW TRD/Cal
-
+EINCLUDE:= RAW TRD/Cal STAT
+ELIBSDIR:= $(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)
+ELIBS:=STAT
 ifeq (win32gcc,$(ALICE_TARGET))
 PACKSOFLAGS:= $(SOFLAGS) -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET) \
                          -lSTEER -lCDB -lESD -lSTEERBase \