]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrigger.cxx
Some added protections
[u/mrichter/AliRoot.git] / TRD / AliTRDtrigger.cxx
index 33fef5e6751431cf5157f71201cc3cb36c9611c9..c1d3de90a28a145a7c988f34410b203224f99169 100644 (file)
 #include "AliLoader.h"
 
 #include "AliTRDdigitsManager.h"
-#include "AliTRDgeometry.h"
 #include "AliTRDdataArrayI.h"
+#include "AliTRDdataArrayS.h"
+#include "AliTRDgeometry.h"
 #include "AliTRDcalibDB.h"
-#include "AliTRDCommonParam.h"
 #include "AliTRDrawData.h"
 #include "AliTRDtrigger.h"
 #include "AliTRDmodule.h"
@@ -45,8 +45,8 @@
 #include "AliTRDtrigParam.h"
 #include "AliTRDmcm.h"
 #include "AliTRDzmaps.h"
-#include "AliTRDCalibra.h"
-#include "Cal/AliTRDCalPIDLQ.h"
+// #include "AliTRDCalibraFillHisto.h"
+#include "Cal/AliTRDCalPID.h"
 
 ClassImp(AliTRDtrigger)
 
@@ -55,9 +55,6 @@ AliTRDtrigger::AliTRDtrigger()
   :TNamed()
   ,fField(0)
   ,fGeo(NULL)
-  ,fCalib(NULL)
-  ,fCParam(NULL)
-  ,fTrigParam(NULL)
   ,fRunLoader(NULL)
   ,fDigitsManager(NULL)
   ,fTrackletTree(NULL)
@@ -87,9 +84,6 @@ AliTRDtrigger::AliTRDtrigger(const Text_t *name, const Text_t *title)
   :TNamed(name,title)
   ,fField(0)
   ,fGeo(NULL)
-  ,fCalib(NULL)
-  ,fCParam(NULL)
-  ,fTrigParam(NULL)
   ,fRunLoader(NULL)
   ,fDigitsManager(new AliTRDdigitsManager())
   ,fTrackletTree(NULL)
@@ -119,9 +113,6 @@ AliTRDtrigger::AliTRDtrigger(const AliTRDtrigger &p)
   :TNamed(p)
   ,fField(p.fField)
   ,fGeo(NULL)
-  ,fCalib(NULL)
-  ,fCParam(NULL)
-  ,fTrigParam(NULL)
   ,fRunLoader(NULL)
   ,fDigitsManager(NULL)
   ,fTrackletTree(NULL)
@@ -144,6 +135,11 @@ AliTRDtrigger::AliTRDtrigger(const AliTRDtrigger &p)
   // AliTRDtrigger copy constructor
   //
 
+  if (fGeo) {
+    delete fGeo;
+  }
+  fGeo = new AliTRDgeometry();
+
 }
 
 ///_____________________________________________________________________________
@@ -163,6 +159,16 @@ AliTRDtrigger::~AliTRDtrigger()
     delete fTracks;
   }
 
+  if (fGeo) {
+    delete fGeo;
+  }
+
+  delete fDigitsManager;
+  delete fModule;
+  delete fTrkTest;
+  delete fMCM;
+  //  delete fTrk;
+
 }
 
 //_____________________________________________________________________________
@@ -191,25 +197,26 @@ void AliTRDtrigger::Copy(TObject &) const
 //_____________________________________________________________________________
 void AliTRDtrigger::Init()
 {
+  //
+  // Initialization
+  //
 
-  fModule = new AliTRDmodule(fTrigParam); 
+  fModule = new AliTRDmodule(); 
   fTracks->Clear();
 
-  fField  = fTrigParam->GetField();
-  fGeo    = (AliTRDgeometry*)AliTRDgeometry::GetGeometry(fRunLoader);
+  // The magnetic field strength
+  Double_t x[3] = { 0.0, 0.0, 0.0 };
+  Double_t b[3];
+  gAlice->Field(x,b);  // b[] is in kilo Gauss
+  fField = b[2] * 0.1; // Tesla
+
+  fGeo = new AliTRDgeometry();
 
-  fCalib  = AliTRDcalibDB::Instance();
-  if (!fCalib) {
+  if (!AliTRDcalibDB::Instance()) {
     AliError("No instance of AliTRDcalibDB.");
     return;  
   }
 
-  fCParam = AliTRDCommonParam::Instance();
-  if (!fCParam) {
-    AliError("No common parameters.");
-    return;
-  }
-
 }
 
 //_____________________________________________________________________________
@@ -283,6 +290,17 @@ Bool_t AliTRDtrigger::ReadDigits(AliRawReader* rawReader)
 
 }
 
+//_____________________________________________________________________________
+Bool_t AliTRDtrigger::ReadDigits(TTree *digitsTree) 
+{
+  //
+  // Reads the digits arrays from the input tree
+  //
+
+  return (fDigitsManager->ReadDigits(digitsTree));
+
+}
+
 //_____________________________________________________________________________
 Bool_t AliTRDtrigger::ReadTracklets(AliRunLoader *rl) 
 {
@@ -316,16 +334,16 @@ Bool_t AliTRDtrigger::ReadTracklets(AliRunLoader *rl)
     
     for (itrk = 0; itrk < tracklets->GetEntriesFast(); itrk++) {
 
-      fTrk   = (AliTRDmcmTracklet*)tracklets->UncheckedAt(itrk);
+      fTrk   = (AliTRDmcmTracklet *) tracklets->UncheckedAt(itrk);
       idet   = fTrk->GetDetector();
-      iStack = idet / (AliTRDgeometry::Nplan());
+      iStack = idet / (AliTRDgeometry::Nlayer());
 
       if (iStackPrev != iStack) {
        if (iStackPrev == -1) {
          iStackPrev = iStack;
        } 
         else {
-         MakeTracks(idet - AliTRDgeometry::Nplan());
+         MakeTracks(idet - AliTRDgeometry::Nlayer());
          ResetTracklets();
          iStackPrev = iStack;
        }
@@ -336,7 +354,7 @@ Bool_t AliTRDtrigger::ReadTracklets(AliRunLoader *rl)
       if ((iEntry == (nEntries-1)) && 
           (itrk   == (tracklets->GetEntriesFast() - 1))) {
        idet++;
-       MakeTracks(idet-AliTRDgeometry::Nplan());
+       MakeTracks(idet-AliTRDgeometry::Nlayer());
        ResetTracklets();
       }
 
@@ -357,15 +375,15 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
   // Create tracklets from digits
   //
 
-  Int_t chamBeg = 0;
-  Int_t chamEnd = AliTRDgeometry::Ncham();
-  Int_t planBeg = 0;
-  Int_t planEnd = AliTRDgeometry::Nplan();
-  Int_t sectBeg = 0;
-  Int_t sectEnd = AliTRDgeometry::Nsect();
+  Int_t stackBeg  = 0;
+  Int_t stackEnd  = AliTRDgeometry::Nstack();
+  Int_t layerBeg  = 0;
+  Int_t layerEnd  = AliTRDgeometry::Nlayer();
+  Int_t sectorBeg = 0;
+  Int_t sectorEnd = AliTRDgeometry::Nsector();
 
   fTrkTest = new AliTRDmcmTracklet(0,0,0);
-  fMCM     = new AliTRDmcm(fTrigParam,0);
+  fMCM     = new AliTRDmcm(0);
 
   Int_t   time;
   Int_t   col;
@@ -373,60 +391,60 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
   Int_t   col1;
   Int_t   col2;
   Int_t   idet       = -1;
-  Int_t   iStack     = -1;
+  Int_t   iStackCur  = -1;
   Int_t   iStackPrev = -1;
   Float_t amp;
 
-  for (Int_t isect = sectBeg; isect < sectEnd; isect++) {
+  for (Int_t isector = sectorBeg; isector < sectorEnd; isector++) {
 
-    for (Int_t icham = chamBeg; icham < chamEnd; icham++) {
+    for (Int_t istack = stackBeg; istack < stackEnd; istack++) {
 
       // Number of ROBs in the chamber
-      if(icham == 2) {
+      if(istack == 2) {
        fNROB = 6;
       } 
       else {
        fNROB = 8;
       }
 
-      for (Int_t iplan = planBeg; iplan < planEnd; iplan++) {
+      for (Int_t ilayer = layerBeg; ilayer < layerEnd; ilayer++) {
 
-        idet = fGeo->GetDetector(iplan,icham,isect);
+        idet = fGeo->GetDetector(ilayer,istack,isector);
        ResetTracklets();
        
        if (makeTracks) {
-         iStack = idet / (AliTRDgeometry::Nplan());
-         if (iStackPrev != iStack) {
+         iStackCur = idet / (AliTRDgeometry::Nlayer());
+         if (iStackPrev != iStackCur) {
            if (iStackPrev == -1) {
-             iStackPrev = iStack;
+             iStackPrev = iStackCur;
            } 
             else {
-             MakeTracks(idet-AliTRDgeometry::Nplan());
+             MakeTracks(idet-AliTRDgeometry::Nlayer());
              ResetTracklets();
-             iStackPrev = iStack;
+             iStackPrev = iStackCur;
            }
          }
        }
 
-        Int_t nRowMax    = fCParam->GetRowMax(iplan,icham,isect);
-       Int_t nColMax    = fCParam->GetColMax(iplan);
-        Int_t nTimeTotal = fCalib->GetNumberOfTimeBins();
+        Int_t nRowMax    = fGeo->GetRowMax(ilayer,istack,isector);
+       Int_t nColMax    = fGeo->GetColMax(ilayer);
+        Int_t nTimeTotal = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
 
         // Get the digits
-        fDigits = fDigitsManager->GetDigits(idet);
+        fDigits = (AliTRDdataArrayS *) fDigitsManager->GetDigits(idet);
        if (!fDigits) return kFALSE;
        // This is to take care of switched off super modules
         if (fDigits->GetNtime() == 0) {
           continue;
        }
         fDigits->Expand();
-        fTrack0 = fDigitsManager->GetDictionary(idet,0);
+        fTrack0 = (AliTRDdataArrayI *) fDigitsManager->GetDictionary(idet,0);
        if (!fTrack0) return kFALSE;
         fTrack0->Expand();
-        fTrack1 = fDigitsManager->GetDictionary(idet,1);
+        fTrack1 = (AliTRDdataArrayI *) fDigitsManager->GetDictionary(idet,1);
        if (!fTrack1) return kFALSE;
         fTrack1->Expand();
-        fTrack2 = fDigitsManager->GetDictionary(idet,2); 
+        fTrack2 = (AliTRDdataArrayI *) fDigitsManager->GetDictionary(idet,2); 
        if (!fTrack2) return kFALSE;
         fTrack2->Expand();
 
@@ -461,8 +479,9 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
              }
            }
 
-           if (fTrigParam->GetTailCancelation()) {
-             fMCM->Filter(fTrigParam->GetNexponential(),fTrigParam->GetFilterType());
+           if (AliTRDtrigParam::Instance()->GetTailCancelation()) {
+             fMCM->Filter(AliTRDtrigParam::Instance()->GetNexponential()
+                          ,AliTRDtrigParam::Instance()->GetFilterType());
            }
            
            if (fMCM->Run()) {
@@ -473,9 +492,7 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
                   continue;
                }
 
-               if (fTrigParam->GetDebugLevel()   > 1) { 
-                 AliInfo(Form("Add tracklet %d in col %02d \n",fNtracklets,fMCM->GetSeedCol()[iSeed]));
-               }
+               AliDebug(2,Form("Add tracklet %d in col %02d \n",fNtracklets,fMCM->GetSeedCol()[iSeed]));
 
                if (TestTracklet(idet,row,iSeed,0)) {
                  AddTracklet(idet,row,iSeed,fNtracklets++);
@@ -504,7 +521,7 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
 
   if (makeTracks) {
     idet++;
-    MakeTracks(idet - AliTRDgeometry::Nplan());
+    MakeTracks(idet - AliTRDgeometry::Nlayer());
     ResetTracklets();
   }
 
@@ -572,13 +589,13 @@ Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
   // Check first the tracklet pt
   //
 
-  Int_t nTimeTotal  = fCalib->GetNumberOfTimeBins();
+  Int_t nTimeTotal  = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
 
   // Calibration fill 2D
-  AliTRDCalibra *calibra = AliTRDCalibra::Instance();
-  if (!calibra) {
-    AliInfo("Could not get Calibra instance\n");
-  }
+//   AliTRDCalibraFillHisto *calibra = AliTRDCalibraFillHisto::Instance();
+//   if (!calibra) {
+//     AliInfo("Could not get Calibra instance\n");
+//   }
 
   fTrkTest->Reset();
 
@@ -638,14 +655,9 @@ Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
   // LTU Pt cut
   fTrkTest->MakeTrackletGraph(fGeo,fField);
 
-  // TRD Online calibration
-  if (calibra->Getmcmtracking()) {
-    calibra->UpdateHistogramcm(fTrkTest);
-  }
-
   fTrkTest->MakeClusAmpGraph();
 
-  if (TMath::Abs(fTrkTest->GetPt()) < fTrigParam->GetLtuPtCut()) {
+  if (TMath::Abs(fTrkTest->GetPt()) < AliTRDtrigParam::Instance()->GetLtuPtCut()) {
     return kFALSE;
   }
   
@@ -660,7 +672,7 @@ void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
   // Add a found tracklet
   //
 
-  Int_t nTimeTotal  = fCalib->GetNumberOfTimeBins();
+  Int_t nTimeTotal  = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
 
   fTrk = new AliTRDmcmTracklet(det,row,n);
 
@@ -716,7 +728,7 @@ void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
   // LTU Pt cut
   fTrk->MakeTrackletGraph(fGeo,fField);
   fTrk->MakeClusAmpGraph();
-  if (TMath::Abs(fTrk->GetPt()) < fTrigParam->GetLtuPtCut()) {
+  if (TMath::Abs(fTrk->GetPt()) < AliTRDtrigParam::Instance()->GetLtuPtCut()) {
     return;
   }
       
@@ -792,7 +804,7 @@ void AliTRDtrigger::MakeTracks(Int_t det)
   
   fModule->Reset();
 
-  Int_t nRowMax, iplan, icham, isect, row;
+  Int_t nRowMax, ilayer, istack, isector, row;
 
   if ((det < 0) || (det >= AliTRDgeometry::Ndet())) {
     AliError(Form("Unexpected detector index %d.",det));
@@ -806,11 +818,11 @@ void AliTRDtrigger::MakeTracks(Int_t det)
     
     trk = (AliTRDmcmTracklet *) Tracklets()->UncheckedAt(i);
     
-    iplan = fGeo->GetPlane(trk->GetDetector());
-    icham = fGeo->GetChamber(trk->GetDetector());
-    isect = fGeo->GetSector(trk->GetDetector());
+    ilayer  = fGeo->GetLayer(trk->GetDetector());
+    istack  = fGeo->GetStack(trk->GetDetector());
+    isector = fGeo->GetSector(trk->GetDetector());
 
-    nRowMax = fCParam->GetRowMax(iplan,icham,isect);
+    nRowMax = fGeo->GetRowMax(ilayer,istack,isector);
     row = trk->GetRow();
 
     fModule->AddTracklet(trk->GetDetector(),
@@ -827,7 +839,7 @@ void AliTRDtrigger::MakeTracks(Int_t det)
 
   fModule->SortTracklets();
   fModule->RemoveMultipleTracklets();
-  fModule->SortZ((Int_t)fGeo->GetChamber(det));
+  fModule->SortZ((Int_t)fGeo->GetStack(det));
   fModule->FindTracks();
   fModule->SortTracks();
   fModule->RemoveMultipleTracks();
@@ -836,7 +848,7 @@ void AliTRDtrigger::MakeTracks(Int_t det)
   AliTRDgtuTrack *gtutrk;
   for (Int_t i = 0; i < nModTracks; i++) {
     gtutrk = (AliTRDgtuTrack*)fModule->GetTrack(i);
-    if (TMath::Abs(gtutrk->GetPt()) < fTrigParam->GetGtuPtCut()) continue;
+    if (TMath::Abs(gtutrk->GetPt()) < AliTRDtrigParam::Instance()->GetGtuPtCut()) continue;
     gtutrk->CookLabel();
     gtutrk->MakePID();
     AddTrack(gtutrk,det);