#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"
#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)
:TNamed()
,fField(0)
,fGeo(NULL)
- ,fCalib(NULL)
- ,fCParam(NULL)
- ,fTrigParam(NULL)
,fRunLoader(NULL)
,fDigitsManager(NULL)
,fTrackletTree(NULL)
:TNamed(name,title)
,fField(0)
,fGeo(NULL)
- ,fCalib(NULL)
- ,fCParam(NULL)
- ,fTrigParam(NULL)
,fRunLoader(NULL)
,fDigitsManager(new AliTRDdigitsManager())
,fTrackletTree(NULL)
:TNamed(p)
,fField(p.fField)
,fGeo(NULL)
- ,fCalib(NULL)
- ,fCParam(NULL)
- ,fTrigParam(NULL)
,fRunLoader(NULL)
,fDigitsManager(NULL)
,fTrackletTree(NULL)
// AliTRDtrigger copy constructor
//
+ if (fGeo) {
+ delete fGeo;
+ }
+ fGeo = new AliTRDgeometry();
+
}
///_____________________________________________________________________________
delete fTracks;
}
+ if (fGeo) {
+ delete fGeo;
+ }
+
+ delete fDigitsManager;
+ delete fModule;
+ delete fTrkTest;
+ delete fMCM;
+ // delete fTrk;
+
}
//_____________________________________________________________________________
//_____________________________________________________________________________
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;
- }
-
}
//_____________________________________________________________________________
}
+//_____________________________________________________________________________
+Bool_t AliTRDtrigger::ReadDigits(TTree *digitsTree)
+{
+ //
+ // Reads the digits arrays from the input tree
+ //
+
+ return (fDigitsManager->ReadDigits(digitsTree));
+
+}
+
//_____________________________________________________________________________
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;
}
if ((iEntry == (nEntries-1)) &&
(itrk == (tracklets->GetEntriesFast() - 1))) {
idet++;
- MakeTracks(idet-AliTRDgeometry::Nplan());
+ MakeTracks(idet-AliTRDgeometry::Nlayer());
ResetTracklets();
}
// 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;
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();
}
}
- if (fTrigParam->GetTailCancelation()) {
- fMCM->Filter(fTrigParam->GetNexponential(),fTrigParam->GetFilterType());
+ if (AliTRDtrigParam::Instance()->GetTailCancelation()) {
+ fMCM->Filter(AliTRDtrigParam::Instance()->GetNexponential()
+ ,AliTRDtrigParam::Instance()->GetFilterType());
}
if (fMCM->Run()) {
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++);
if (makeTracks) {
idet++;
- MakeTracks(idet - AliTRDgeometry::Nplan());
+ MakeTracks(idet - AliTRDgeometry::Nlayer());
ResetTracklets();
}
// 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();
// 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;
}
// Add a found tracklet
//
- Int_t nTimeTotal = fCalib->GetNumberOfTimeBins();
+ Int_t nTimeTotal = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
fTrk = new AliTRDmcmTracklet(det,row,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;
}
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));
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(),
fModule->SortTracklets();
fModule->RemoveMultipleTracklets();
- fModule->SortZ((Int_t)fGeo->GetChamber(det));
+ fModule->SortZ((Int_t)fGeo->GetStack(det));
fModule->FindTracks();
fModule->SortTracks();
fModule->RemoveMultipleTracks();
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);