///////////////////////////////////////////////////////////////////////////////
// //
-// //
// TRD trigger class //
// //
+// Author: //
+// Bogdan Vulpescu //
// //
///////////////////////////////////////////////////////////////////////////////
#include <TTree.h>
#include <TBranch.h>
#include <TMatrixD.h>
+#include <TClonesArray.h>
+#include <TObjArray.h>
#include "AliLog.h"
#include "AliRun.h"
#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 "Cal/AliTRDCalPIDLQ.h"
#include "AliTRDrawData.h"
-
#include "AliTRDtrigger.h"
#include "AliTRDmodule.h"
#include "AliTRDmcmTracklet.h"
+#include "AliTRDgtuTrack.h"
#include "AliTRDtrigParam.h"
#include "AliTRDmcm.h"
#include "AliTRDzmaps.h"
-
-//#include "AliHeader.h"
+// #include "AliTRDCalibraFillHisto.h"
+#include "Cal/AliTRDCalPID.h"
ClassImp(AliTRDtrigger)
//_____________________________________________________________________________
-AliTRDtrigger::AliTRDtrigger():
- TNamed(),
- fTracks("AliTRDgtuTrack",0)
+AliTRDtrigger::AliTRDtrigger()
+ :TNamed()
+ ,fField(0)
+ ,fGeo(NULL)
+ ,fRunLoader(NULL)
+ ,fDigitsManager(NULL)
+ ,fTrackletTree(NULL)
+ ,fTracklets(NULL)
+ ,fNROB(0)
+ ,fMCM(NULL)
+ ,fTrk(NULL)
+ ,fTrkTest(NULL)
+ ,fModule(NULL)
+ ,fGTUtrk(NULL)
+ ,fNtracklets(0)
+ ,fDigits(NULL)
+ ,fTrack0(NULL)
+ ,fTrack1(NULL)
+ ,fTrack2(NULL)
+ ,fNPrimary(0)
+ ,fTracks(NULL)
{
//
// AliTRDtrigger default constructor
//
- fDigitsManager = NULL;
- fTrackletTree = NULL;
- fTracklets = NULL;
-
- fNROB = 0;
- fTrigParam = NULL;
- fMCM = NULL;
- fTrk = NULL;
- fGTUtrk = NULL;
-
- fNtracklets = 0;
-
- fDigits = NULL;
- fTrack0 = NULL;
- fTrack1 = NULL;
- fTrack2 = NULL;
-
- fModule = NULL;
-
- fNPrimary = 0;
-
}
//_____________________________________________________________________________
-AliTRDtrigger::AliTRDtrigger(const Text_t *name, const Text_t *title):
- TNamed(name,title),
- fTracks("AliTRDgtuTrack",1000)
+AliTRDtrigger::AliTRDtrigger(const Text_t *name, const Text_t *title)
+ :TNamed(name,title)
+ ,fField(0)
+ ,fGeo(NULL)
+ ,fRunLoader(NULL)
+ ,fDigitsManager(new AliTRDdigitsManager())
+ ,fTrackletTree(NULL)
+ ,fTracklets(new TObjArray(400))
+ ,fNROB(0)
+ ,fMCM(NULL)
+ ,fTrk(NULL)
+ ,fTrkTest(NULL)
+ ,fModule(NULL)
+ ,fGTUtrk(NULL)
+ ,fNtracklets(0)
+ ,fDigits(NULL)
+ ,fTrack0(NULL)
+ ,fTrack1(NULL)
+ ,fTrack2(NULL)
+ ,fNPrimary(0)
+ ,fTracks(new TClonesArray("AliTRDgtuTrack",1000))
{
//
// AliTRDtrigger constructor
//
- fDigitsManager = new AliTRDdigitsManager();
- fTrackletTree = NULL;
- fTracklets = new TObjArray(400);
-
- fNROB = 0;
- fTrigParam = NULL;
- fMCM = NULL;
- fTrk = NULL;
- fGTUtrk = NULL;
-
- fNtracklets = 0;
-
- fDigits = NULL;
- fTrack0 = NULL;
- fTrack1 = NULL;
- fTrack2 = NULL;
-
- fModule = NULL;
-
- fNPrimary = 0;
-
}
//_____________________________________________________________________________
-AliTRDtrigger::AliTRDtrigger(const AliTRDtrigger &p):TNamed(p)
+AliTRDtrigger::AliTRDtrigger(const AliTRDtrigger &p)
+ :TNamed(p)
+ ,fField(p.fField)
+ ,fGeo(NULL)
+ ,fRunLoader(NULL)
+ ,fDigitsManager(NULL)
+ ,fTrackletTree(NULL)
+ ,fTracklets(NULL)
+ ,fNROB(p.fNROB)
+ ,fMCM(NULL)
+ ,fTrk(NULL)
+ ,fTrkTest(NULL)
+ ,fModule(NULL)
+ ,fGTUtrk(NULL)
+ ,fNtracklets(p.fNtracklets)
+ ,fDigits(NULL)
+ ,fTrack0(NULL)
+ ,fTrack1(NULL)
+ ,fTrack2(NULL)
+ ,fNPrimary(p.fNPrimary)
+ ,fTracks(NULL)
{
//
// AliTRDtrigger copy constructor
//
- ((AliTRDtrigger &) p).Copy(*this);
+ if (fGeo) {
+ delete fGeo;
+ }
+ fGeo = new AliTRDgeometry();
}
delete fTracklets;
}
- fTracks.Delete();
+ if (fTracks) {
+ fTracks->Delete();
+ delete fTracks;
+ }
+
+ if (fGeo) {
+ delete fGeo;
+ }
+
+ delete fDigitsManager;
+ delete fModule;
+ delete fTrkTest;
+ delete fMCM;
+ // delete fTrk;
}
//_____________________________________________________________________________
void AliTRDtrigger::Init()
{
+ //
+ // Initialization
+ //
- fModule = new AliTRDmodule(fTrigParam);
- /*
- AliHeader *header = fRunLoader->GetHeader();
- fNPrimary = header->GetNprimary();
- */
- fTracks.Clear();
+ fModule = new AliTRDmodule();
+ fTracks->Clear();
+
+ // 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();
+
+ if (!AliTRDcalibDB::Instance()) {
+ AliError("No instance of AliTRDcalibDB.");
+ return;
+ }
}
//
TString evfoldname = AliConfig::GetDefaultEventFolderName();
- fRunLoader = AliRunLoader::GetRunLoader(evfoldname);
+ fRunLoader = AliRunLoader::GetRunLoader(evfoldname);
- if (!fRunLoader)
+ if (!fRunLoader) {
fRunLoader = AliRunLoader::Open(name);
-
+ }
if (!fRunLoader) {
- Error("Open","Can not open session for file %s.",name);
+ AliError(Form("Can not open session for file %s.",name));
return kFALSE;
}
- // Open input
-
- if (fRunLoader->GetAliRun() == 0x0) fRunLoader->LoadgAlice();
- gAlice = fRunLoader->GetAliRun();
-
- if (!(gAlice)) {
- fRunLoader->LoadgAlice();
- gAlice = fRunLoader->GetAliRun();
- if (!(gAlice)) {
- Error("Open","Could not find AliRun object.");
- return kFALSE;
- }
- }
-
// Import the Trees for the event nEvent in the file
fRunLoader->GetEvent(nEvent);
// Open output
-
TObjArray *ioArray = 0;
-
- AliLoader* loader = fRunLoader->GetLoader("TRDLoader");
+ AliLoader* loader = fRunLoader->GetLoader("TRDLoader");
loader->MakeTree("T");
fTrackletTree = loader->TreeT();
fTrackletTree->Branch("TRDmcmTracklet","TObjArray",&ioArray,32000,0);
- /*
- fRunLoader->LoadHeader();
- */
Init();
return kTRUE;
}
-
//_____________________________________________________________________________
Bool_t AliTRDtrigger::ReadDigits()
{
//
if (!fRunLoader) {
- Error("ReadDigits","Can not find the Run Loader");
+ AliError("Can not find the Run Loader");
return kFALSE;
}
AliLoader* loader = fRunLoader->GetLoader("TRDLoader");
- if (!loader->TreeD()) loader->LoadDigits();
+ if (!loader->TreeD()) {
+ loader->LoadDigits();
+ }
+ if (!loader->TreeD()) {
+ return kFALSE;
+ }
return (fDigitsManager->ReadDigits(loader->TreeD()));
//
AliTRDrawData *raw = new AliTRDrawData();
- raw->SetDebug(1);
-
- fDigitsManager = raw->Raw2Digits(rawReader);
+ fDigitsManager = raw->Raw2Digits(rawReader);
return kTRUE;
}
+//_____________________________________________________________________________
+Bool_t AliTRDtrigger::ReadDigits(TTree *digitsTree)
+{
+ //
+ // Reads the digits arrays from the input tree
+ //
+
+ return (fDigitsManager->ReadDigits(digitsTree));
+
+}
+
//_____________________________________________________________________________
Bool_t AliTRDtrigger::ReadTracklets(AliRunLoader *rl)
{
AliLoader *loader = rl->GetLoader("TRDLoader");
loader->LoadTracks();
- fTrackletTree = loader->TreeT();
+ fTrackletTree = loader->TreeT();
- TBranch *branch = fTrackletTree->GetBranch("TRDmcmTracklet");
+ TBranch *branch = fTrackletTree->GetBranch("TRDmcmTracklet");
if (!branch) {
- Error("ReadTracklets","Can't get the branch !");
+ AliError("Can't get the branch !");
return kFALSE;
}
TObjArray *tracklets = new TObjArray(400);
branch->SetAddress(&tracklets);
- Int_t nEntries = (Int_t) fTrackletTree->GetEntries();
- Int_t iEntry, itrk;
- Int_t iStack, iStackPrev = -1;
+ Int_t nEntries = (Int_t) fTrackletTree->GetEntries();
+ Int_t iEntry;
+ Int_t itrk;
+ Int_t iStack;
+ Int_t iStackPrev = -1;
for (iEntry = 0; iEntry < nEntries; iEntry++) {
+
fTrackletTree->GetEvent(iEntry);
- for (itrk = 0; itrk < tracklets->GetEntriesFast(); itrk++){
-
- fTrk = (AliTRDmcmTracklet*)tracklets->UncheckedAt(itrk);
-
- idet = fTrk->GetDetector();
+ for (itrk = 0; itrk < tracklets->GetEntriesFast(); itrk++) {
+ fTrk = (AliTRDmcmTracklet *) tracklets->UncheckedAt(itrk);
+ idet = fTrk->GetDetector();
iStack = idet / (AliTRDgeometry::Nplan());
+
if (iStackPrev != iStack) {
if (iStackPrev == -1) {
iStackPrev = iStack;
- } else {
- MakeTracks(idet-AliTRDgeometry::Nplan());
+ }
+ else {
+ MakeTracks(idet - AliTRDgeometry::Nplan());
ResetTracklets();
iStackPrev = iStack;
}
Tracklets()->Add(fTrk);
- if (iEntry == (nEntries-1) && itrk == (tracklets->GetEntriesFast()-1)) {
+ if ((iEntry == (nEntries-1)) &&
+ (itrk == (tracklets->GetEntriesFast() - 1))) {
idet++;
MakeTracks(idet-AliTRDgeometry::Nplan());
ResetTracklets();
//_____________________________________________________________________________
Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks)
{
+ //
+ // Create tracklets from digits
+ //
- AliTRDcalibDB* calibration = AliTRDcalibDB::Instance();
- if (!calibration)
- {
- Error("MakeTracklets","No instance of AliTRDcalibDB.");
- return kFALSE;
- }
-
- AliTRDCommonParam* commonParam = AliTRDCommonParam::Instance();
- if (!commonParam)
- {
- Error("MakeTracklets","No common params.");
- return kFALSE;
- }
-
- AliTRDgeometry *geo = AliTRDgeometry::GetGeometry(fRunLoader);
-
- 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();
-
- fMCM = new AliTRDmcm(fTrigParam,0);
-
- Int_t time, col, row, col1, col2;
+ 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();
+
+ fTrkTest = new AliTRDmcmTracklet(0,0,0);
+ fMCM = new AliTRDmcm(0);
+
+ Int_t time;
+ Int_t col;
+ Int_t row;
+ Int_t col1;
+ Int_t col2;
+ Int_t idet = -1;
+ Int_t iStack = -1;
+ Int_t iStackPrev = -1;
Float_t amp;
- Int_t idet, iStack, iStackPrev;
- iStack = -1;
- iStackPrev = -1;
+
for (Int_t isect = sectBeg; isect < sectEnd; isect++) {
for (Int_t icham = chamBeg; icham < chamEnd; icham++) {
- // number of ROBs in the chamber
- if( icham == 2 ) {
+ // Number of ROBs in the chamber
+ if(icham == 2) {
fNROB = 6;
- } else {
+ }
+ else {
fNROB = 8;
}
for (Int_t iplan = planBeg; iplan < planEnd; iplan++) {
- idet = geo->GetDetector(iplan,icham,isect);
+ idet = fGeo->GetDetector(iplan,icham,isect);
ResetTracklets();
if (makeTracks) {
if (iStackPrev != iStack) {
if (iStackPrev == -1) {
iStackPrev = iStack;
- } else {
+ }
+ else {
MakeTracks(idet-AliTRDgeometry::Nplan());
ResetTracklets();
iStackPrev = iStack;
}
}
- Int_t nRowMax = commonParam->GetRowMax(iplan,icham,isect);
- Int_t nColMax = commonParam->GetColMax(iplan);
- Int_t nTimeTotal = calibration->GetNumberOfTimeBins();
+ Int_t nRowMax = fGeo->GetRowMax(iplan,icham,isect);
+ Int_t nColMax = fGeo->GetColMax(iplan);
+ 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();
for (Int_t iRob = 0; iRob < fNROB; iRob++) {
for (Int_t iMcm = 0; iMcm < kNMCM; iMcm++) {
fMCM->Reset();
-
fMCM->SetRobId(iRob);
fMCM->SetChaId(idet);
row = fMCM->GetRow();
- if (row < 0 || row > nRowMax) {
- Error("MakeTracklets","MCM row number out of range.");
+ if ((row < 0) || (row >= nRowMax)) {
+ AliError("MCM row number out of range.");
+ continue;
}
fMCM->GetColRange(col1,col2);
for (time = 0; time < nTimeTotal; time++) {
for (col = col1; col < col2; col++) {
- if (col >= 0 && col < nColMax) {
+ if ((col >= 0) && (col < nColMax)) {
amp = TMath::Abs(fDigits->GetDataUnchecked(row,col,time));
- } else {
+ }
+ else {
amp = 0.0;
}
fMCM->SetADC(col-col1,time,amp);
-
}
}
- if (fTrigParam->GetTailCancelation()) {
- fMCM->Filter(fTrigParam->GetNexponential(),fTrigParam->GetFilterType());
+ if (AliTRDtrigParam::Instance()->GetTailCancelation()) {
+ fMCM->Filter(AliTRDtrigParam::Instance()->GetNexponential()
+ ,AliTRDtrigParam::Instance()->GetFilterType());
}
if (fMCM->Run()) {
for (Int_t iSeed = 0; iSeed < kMaxTrackletsPerMCM; iSeed++) {
- if (fMCM->GetSeedCol()[iSeed] < 0) continue;
-
- if ( fTrigParam->GetDebugLevel() > 1 )
- printf("Add tracklet %d in col %02d \n",fNtracklets,fMCM->GetSeedCol()[iSeed]);
-
- if ( fTrigParam->GetDebugLevel() == -1 ) {
- printf("Add tracklet %d in col %02d \n",fNtracklets,fMCM->GetSeedCol()[iSeed]);
- for (time = 0; time < nTimeTotal; time++) {
- for (col = 0; col < kMcmCol; col++) {
- printf("%03.0f ",fMCM->GetADC(col,time));
- }
- printf("\n");
- }
+ if (fMCM->GetSeedCol()[iSeed] < 0) {
+ continue;
}
- AddTracklet(idet,row,iSeed,fNtracklets++);
+ 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::Nplan());
ResetTracklets();
}
//_____________________________________________________________________________
void AliTRDtrigger::SetMCMcoordinates(Int_t imcm)
{
+ //
+ // Configure MCM position in the pad plane
+ //
Int_t robid = fMCM->GetRobId();
if (robid%kNcolRob == 0) {
- if ( mcmid%kNmcmRob == 0 ) {
+ if (mcmid%kNmcmRob == 0) {
fMCM->SetColRange(18*0-1,18*1-1+2+1);
}
- if ( mcmid%kNmcmRob == 1 ) {
+ if (mcmid%kNmcmRob == 1) {
fMCM->SetColRange(18*1-1,18*2-1+2+1);
}
- if ( mcmid%kNmcmRob == 2 ) {
+ if (mcmid%kNmcmRob == 2) {
fMCM->SetColRange(18*2-1,18*3-1+2+1);
}
- if ( mcmid%kNmcmRob == 3 ) {
+ if (mcmid%kNmcmRob == 3) {
fMCM->SetColRange(18*3-1,18*4-1+2+1);
}
- } else {
+ }
+ else {
- if ( mcmid%kNmcmRob == 0 ) {
+ if (mcmid%kNmcmRob == 0) {
fMCM->SetColRange(18*4-1,18*5-1+2+1);
}
- if ( mcmid%kNmcmRob == 1 ) {
+ if (mcmid%kNmcmRob == 1) {
fMCM->SetColRange(18*5-1,18*6-1+2+1);
}
- if ( mcmid%kNmcmRob == 2 ) {
+ if (mcmid%kNmcmRob == 2) {
fMCM->SetColRange(18*6-1,18*7-1+2+1);
}
- if ( mcmid%kNmcmRob == 3 ) {
+ if (mcmid%kNmcmRob == 3) {
fMCM->SetColRange(18*7-1,18*8-1+2+1);
}
}
//_____________________________________________________________________________
-void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
+Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
{
+ //
+ // Check first the tracklet pt
+ //
- Float_t field = fTrigParam->GetField();
- AliTRDgeometry *geo = (AliTRDgeometry*)AliTRDgeometry::GetGeometry(fRunLoader);
+ Int_t nTimeTotal = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+
+ // Calibration fill 2D
+// AliTRDCalibraFillHisto *calibra = AliTRDCalibraFillHisto::Instance();
+// if (!calibra) {
+// AliInfo("Could not get Calibra instance\n");
+// }
+
+ fTrkTest->Reset();
+
+ fTrkTest->SetDetector(det);
+ fTrkTest->SetRow(row);
+ fTrkTest->SetN(n);
+
+ Int_t iCol, iCol1, iCol2, track[3];
+ iCol = fMCM->GetSeedCol()[seed]; // 0....20 (MCM)
+ fMCM->GetColRange(iCol1,iCol2); // range in the pad plane
+
+ Float_t amp[3];
+ for (Int_t iTime = 0; iTime < nTimeTotal; iTime++) {
+
+ amp[0] = fMCM->GetADC(iCol-1,iTime);
+ amp[1] = fMCM->GetADC(iCol ,iTime);
+ amp[2] = fMCM->GetADC(iCol+1,iTime);
+
+ // extract track contribution only from the central pad
+ track[0] = fTrack0->GetDataUnchecked(row,iCol+iCol1,iTime);
+ track[1] = fTrack1->GetDataUnchecked(row,iCol+iCol1,iTime);
+ track[2] = fTrack2->GetDataUnchecked(row,iCol+iCol1,iTime);
+
+ if (fMCM->IsCluster(iCol,iTime)) {
+
+ fTrkTest->AddCluster(iCol+iCol1,iTime,amp,track);
+
+ }
+ else if ((iCol+1+1) < kMcmCol) {
+
+ amp[0] = fMCM->GetADC(iCol-1+1,iTime);
+ amp[1] = fMCM->GetADC(iCol +1,iTime);
+ amp[2] = fMCM->GetADC(iCol+1+1,iTime);
+
+ if (fMCM->IsCluster(iCol+1,iTime)) {
+
+ // extract track contribution only from the central pad
+ track[0] = fTrack0->GetDataUnchecked(row,iCol+1+iCol1,iTime);
+ track[1] = fTrack1->GetDataUnchecked(row,iCol+1+iCol1,iTime);
+ track[2] = fTrack2->GetDataUnchecked(row,iCol+1+iCol1,iTime);
+
+ fTrkTest->AddCluster(iCol+1+iCol1,iTime,amp,track);
+
+ }
+
+ }
- AliTRDcalibDB* calibration = AliTRDcalibDB::Instance();
- if (!calibration)
- {
- Error("AddTracklets","No instance of AliTRDcalibDB.");
- return;
+ }
+
+ fTrkTest->CookLabel(0.8);
+ /*
+ if (fTrkTest->GetLabel() >= fNPrimary) {
+ Info("AddTracklet","Only primaries are stored!");
+ return;
+ }
+ */
+ // LTU Pt cut
+ fTrkTest->MakeTrackletGraph(fGeo,fField);
+
+ fTrkTest->MakeClusAmpGraph();
+
+ if (TMath::Abs(fTrkTest->GetPt()) < AliTRDtrigParam::Instance()->GetLtuPtCut()) {
+ return kFALSE;
}
- Int_t nTimeTotal = calibration->GetNumberOfTimeBins();
+ return kTRUE;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n)
+{
+ //
+ // Add a found tracklet
+ //
+
+ Int_t nTimeTotal = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
fTrk = new AliTRDmcmTracklet(det,row,n);
track[1] = fTrack1->GetDataUnchecked(row,iCol+iCol1,iTime);
track[2] = fTrack2->GetDataUnchecked(row,iCol+iCol1,iTime);
- if (fMCM->IsCluster(iCol,iTime)) {
+ if (fMCM->IsCluster(iCol,iTime)) {
fTrk->AddCluster(iCol+iCol1,iTime,amp,track);
- } else if ((iCol+1+1) < kMcmCol) {
+ }
+ else if ((iCol+1+1) < kMcmCol) {
amp[0] = fMCM->GetADC(iCol-1+1,iTime);
amp[1] = fMCM->GetADC(iCol +1,iTime);
}
- } else {
}
}
}
*/
// LTU Pt cut
- fTrk->MakeTrackletGraph(geo,field);
+ fTrk->MakeTrackletGraph(fGeo,fField);
fTrk->MakeClusAmpGraph();
- if (TMath::Abs(fTrk->GetPt()) < fTrigParam->GetLtuPtCut()) {
+ if (TMath::Abs(fTrk->GetPt()) < AliTRDtrigParam::Instance()->GetLtuPtCut()) {
return;
}
//
if ((det < -1) || (det >= AliTRDgeometry::Ndet())) {
- Error("WriteTracklets","Unexpected detector index %d.",det);
+ AliError(Form("Unexpected detector index %d.",det));
return kFALSE;
}
TObjArray *detTracklets = new TObjArray(400);
for (Int_t i = 0; i < nTracklets; i++) {
+
AliTRDmcmTracklet *trk = (AliTRDmcmTracklet *) Tracklets()->UncheckedAt(i);
if (det == trk->GetDetector()) {
detTracklets->AddLast(trk);
}
- else {
- }
+
}
branch->SetAddress(&detTracklets);
if (det == -1) {
- Info("WriteTracklets","Writing the Tracklet tree %s for event %d."
- ,fTrackletTree->GetName(),fRunLoader->GetEventNumber());
+ AliInfo(Form("Writing the Tracklet tree %s for event %d."
+ ,fTrackletTree->GetName(),fRunLoader->GetEventNumber()));
AliLoader* loader = fRunLoader->GetLoader("TRDLoader");
loader->WriteTracks("OVERWRITE");
fModule->Reset();
- AliTRDCommonParam* commonParam = AliTRDCommonParam::Instance();
- if (!commonParam)
- {
- Error("MakeTracks","No common params.");
- return;
- }
-
Int_t nRowMax, iplan, icham, isect, row;
- AliTRDgeometry *geo = (AliTRDgeometry*)AliTRDgeometry::GetGeometry(fRunLoader);
-
if ((det < 0) || (det >= AliTRDgeometry::Ndet())) {
- Error("MakeTracks","Unexpected detector index %d.",det);
+ AliError(Form("Unexpected detector index %d.",det));
return;
}
trk = (AliTRDmcmTracklet *) Tracklets()->UncheckedAt(i);
- iplan = geo->GetPlane(trk->GetDetector());
- icham = geo->GetChamber(trk->GetDetector());
- isect = geo->GetSector(trk->GetDetector());
+ iplan = fGeo->GetPlane(trk->GetDetector());
+ icham = fGeo->GetChamber(trk->GetDetector());
+ isect = fGeo->GetSector(trk->GetDetector());
- nRowMax = commonParam->GetRowMax(iplan,icham,isect);
+ nRowMax = fGeo->GetRowMax(iplan,icham,isect);
row = trk->GetRow();
fModule->AddTracklet(trk->GetDetector(),
fModule->SortTracklets();
fModule->RemoveMultipleTracklets();
- fModule->SortZ((Int_t)geo->GetChamber(det));
+ fModule->SortZ((Int_t)fGeo->GetChamber(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);
}
+//_____________________________________________________________________________
+void AliTRDtrigger::AddTrack(const AliTRDgtuTrack *t, Int_t det)
+{
+ //
+ // Add a track to the list
+ //
+
+ AliTRDgtuTrack *track = new(fTracks->operator[](fTracks->GetEntriesFast()))
+ AliTRDgtuTrack(*t);
+ track->SetDetector(det);
+
+}
+
+//_____________________________________________________________________________
+TObjArray* AliTRDtrigger::Tracklets()
+{
+ //
+ // Returns list of tracklets
+ //
+
+ if (!fTracklets) {
+ fTracklets = new TObjArray(400);
+ }
+ return fTracklets;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtrigger::ResetTracklets()
+{
+ //
+ // Resets the list of tracklets
+ //
+
+ if (fTracklets) {
+ fTracklets->Delete();
+ }
+
+}
+//_____________________________________________________________________________
+Int_t AliTRDtrigger::GetNumberOfTracks() const
+{
+ //
+ // Returns number of tracks
+ //
+
+ return fTracks->GetEntriesFast();
+
+}
+
+//_____________________________________________________________________________
+AliTRDgtuTrack* AliTRDtrigger::GetTrack(Int_t i) const
+{
+ //
+ // Returns a given track from the list
+ //
+
+ return (AliTRDgtuTrack *) fTracks->UncheckedAt(i);
+
+}