X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDtrigger.cxx;h=c1d3de90a28a145a7c988f34410b203224f99169;hb=15e37b0ae3f95a9e39bf307bc58f173a954af14c;hp=2cd1f97b69f37763d76da3cdbded384aac57d585;hpb=9e79a757d61fc891750b9e640aa161c07a428a5e;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDtrigger.cxx b/TRD/AliTRDtrigger.cxx index 2cd1f97b69f..c1d3de90a28 100644 --- a/TRD/AliTRDtrigger.cxx +++ b/TRD/AliTRDtrigger.cxx @@ -15,123 +15,130 @@ /////////////////////////////////////////////////////////////////////////////// // // -// // // TRD trigger class // // // +// Author: // +// Bogdan Vulpescu // // // /////////////////////////////////////////////////////////////////////////////// #include #include #include +#include +#include #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; - fTrkTest = NULL; - fGTUtrk = NULL; - - fNtracklets = 0; - - fDigits = NULL; - fTrack0 = NULL; - fTrack1 = NULL; - fTrack2 = NULL; - - fModule = NULL; - - fNPrimary = 0; - - fField = 0.0; - fGeo = NULL; - fCalib = NULL; - fCParam = NULL; - } //_____________________________________________________________________________ -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; - fTrkTest = NULL; - fGTUtrk = NULL; - - fNtracklets = 0; - - fDigits = NULL; - fTrack0 = NULL; - fTrack1 = NULL; - fTrack2 = NULL; - - fModule = NULL; - - fNPrimary = 0; - - fField = 0.0; - fGeo = NULL; - fCalib = NULL; - fCParam = NULL; - } //_____________________________________________________________________________ -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(); } @@ -147,7 +154,20 @@ AliTRDtrigger::~AliTRDtrigger() delete fTracklets; } - fTracks.Delete(); + if (fTracks) { + fTracks->Delete(); + delete fTracks; + } + + if (fGeo) { + delete fGeo; + } + + delete fDigitsManager; + delete fModule; + delete fTrkTest; + delete fMCM; + // delete fTrk; } @@ -177,29 +197,24 @@ void AliTRDtrigger::Copy(TObject &) const //_____________________________________________________________________________ void AliTRDtrigger::Init() { + // + // Initialization + // - fModule = new AliTRDmodule(fTrigParam); - /* - AliHeader *header = fRunLoader->GetHeader(); - fNPrimary = header->GetNprimary(); - */ - fTracks.Clear(); + 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 - fCalib = AliTRDcalibDB::Instance(); - if (!fCalib) - { - Error("Init","No instance of AliTRDcalibDB."); - return; - } + fGeo = new AliTRDgeometry(); - fCParam = AliTRDCommonParam::Instance(); - if (!fCParam) - { - Error("Init","No common params."); - return; + if (!AliTRDcalibDB::Instance()) { + AliError("No instance of AliTRDcalibDB."); + return; } } @@ -212,51 +227,31 @@ Bool_t AliTRDtrigger::Open(const Char_t *name, Int_t nEvent) // 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() { @@ -265,12 +260,17 @@ 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())); @@ -284,14 +284,23 @@ Bool_t AliTRDtrigger::ReadDigits(AliRawReader* rawReader) // 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) { @@ -303,35 +312,38 @@ 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++){ + for (itrk = 0; itrk < tracklets->GetEntriesFast(); itrk++) { - fTrk = (AliTRDmcmTracklet*)tracklets->UncheckedAt(itrk); - - idet = fTrk->GetDetector(); + fTrk = (AliTRDmcmTracklet *) tracklets->UncheckedAt(itrk); + idet = fTrk->GetDetector(); + iStack = idet / (AliTRDgeometry::Nlayer()); - iStack = idet / (AliTRDgeometry::Nplan()); if (iStackPrev != iStack) { if (iStackPrev == -1) { iStackPrev = iStack; - } else { - MakeTracks(idet-AliTRDgeometry::Nplan()); + } + else { + MakeTracks(idet - AliTRDgeometry::Nlayer()); ResetTracklets(); iStackPrev = iStack; } @@ -339,9 +351,10 @@ Bool_t AliTRDtrigger::ReadTracklets(AliRunLoader *rl) Tracklets()->Add(fTrk); - if (iEntry == (nEntries-1) && itrk == (tracklets->GetEntriesFast()-1)) { + if ((iEntry == (nEntries-1)) && + (itrk == (tracklets->GetEntriesFast() - 1))) { idet++; - MakeTracks(idet-AliTRDgeometry::Nplan()); + MakeTracks(idet-AliTRDgeometry::Nlayer()); ResetTracklets(); } @@ -362,64 +375,77 @@ 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); - - Int_t time, col, row, col1, col2; + 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 iStackCur = -1; + Int_t iStackPrev = -1; Float_t amp; - Int_t idet, iStack, iStackPrev; - idet = -1; - iStack = -1; - iStackPrev = -1; - for (Int_t isect = sectBeg; isect < sectEnd; isect++) { - for (Int_t icham = chamBeg; icham < chamEnd; icham++) { + for (Int_t isector = sectorBeg; isector < sectorEnd; isector++) { - // number of ROBs in the chamber - if( icham == 2 ) { + for (Int_t istack = stackBeg; istack < stackEnd; istack++) { + + // Number of ROBs in the chamber + if(istack == 2) { fNROB = 6; - } else { + } + 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; - } else { - MakeTracks(idet-AliTRDgeometry::Nplan()); + iStackPrev = iStackCur; + } + else { + 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(); for (Int_t iRob = 0; iRob < fNROB; iRob++) { @@ -427,7 +453,6 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks) for (Int_t iMcm = 0; iMcm < kNMCM; iMcm++) { fMCM->Reset(); - fMCM->SetRobId(iRob); fMCM->SetChaId(idet); @@ -435,8 +460,8 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks) 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; } @@ -444,39 +469,31 @@ Bool_t AliTRDtrigger::MakeTracklets(Bool_t makeTracks) 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; } + 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(); } @@ -530,31 +547,32 @@ void AliTRDtrigger::SetMCMcoordinates(Int_t imcm) 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); } @@ -571,7 +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 +// AliTRDCalibraFillHisto *calibra = AliTRDCalibraFillHisto::Instance(); +// if (!calibra) { +// AliInfo("Could not get Calibra instance\n"); +// } fTrkTest->Reset(); @@ -595,11 +619,12 @@ Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t 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)) { fTrkTest->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); @@ -616,8 +641,7 @@ Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t n) } - } else { - } + } } @@ -629,10 +653,11 @@ Bool_t AliTRDtrigger::TestTracklet(Int_t det, Int_t row, Int_t seed, Int_t n) } */ // LTU Pt cut - fTrkTest->MakeTrackletGraph(fGeo,fField); + fTrkTest->MakeClusAmpGraph(); - if (TMath::Abs(fTrkTest->GetPt()) < fTrigParam->GetLtuPtCut()) { + + if (TMath::Abs(fTrkTest->GetPt()) < AliTRDtrigParam::Instance()->GetLtuPtCut()) { return kFALSE; } @@ -647,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); @@ -667,11 +692,12 @@ void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t 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); @@ -688,7 +714,6 @@ void AliTRDtrigger::AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n) } - } else { } } @@ -703,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; } @@ -720,7 +745,7 @@ Bool_t AliTRDtrigger::WriteTracklets(Int_t det) // if ((det < -1) || (det >= AliTRDgeometry::Ndet())) { - Error("WriteTracklets","Unexpected detector index %d.",det); + AliError(Form("Unexpected detector index %d.",det)); return kFALSE; } @@ -736,13 +761,13 @@ Bool_t AliTRDtrigger::WriteTracklets(Int_t det) 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); @@ -756,8 +781,8 @@ Bool_t AliTRDtrigger::WriteTracklets(Int_t det) 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"); @@ -779,10 +804,10 @@ 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())) { - Error("MakeTracks","Unexpected detector index %d.",det); + AliError(Form("Unexpected detector index %d.",det)); return; } @@ -793,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(), @@ -814,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(); @@ -823,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); @@ -831,4 +856,64 @@ void AliTRDtrigger::MakeTracks(Int_t 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); + +}