From dc1f26811095ec585e80dbb0ffc6f962f989a89f Mon Sep 17 00:00:00 2001 From: jklein Date: Thu, 12 Apr 2012 08:17:35 +0000 Subject: [PATCH] - allow to store clusters contributing to tracklets --- TRD/AliTRDmcmSim.cxx | 86 +++++++++++++++++++++++++------------------- TRD/AliTRDmcmSim.h | 5 +++ 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/TRD/AliTRDmcmSim.cxx b/TRD/AliTRDmcmSim.cxx index 965857eaaa4..5bc256ec3e9 100644 --- a/TRD/AliTRDmcmSim.cxx +++ b/TRD/AliTRDmcmSim.cxx @@ -54,6 +54,7 @@ ClassImp(AliTRDmcmSim) Bool_t AliTRDmcmSim::fgApplyCut = kTRUE; Int_t AliTRDmcmSim::fgAddBaseline = 0; +Bool_t AliTRDmcmSim::fgStoreClusters = kFALSE; const Int_t AliTRDmcmSim::fgkFormatIndex = std::ios_base::xalloc(); @@ -1225,23 +1226,29 @@ void AliTRDmcmSim::CalcFitreg() UShort_t qTotal[19+1]; // the last is dummy UShort_t marked[6], qMarked[6], worse1, worse2; - // find first timebin to be looked at - timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPFS, fDetector, fRobPos, fMcmPos); - if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos) - < timebin1) - timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos); - if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos) - < timebin1) - timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos); - - // find last timebin to be looked at - timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPFE, fDetector, fRobPos, fMcmPos); - if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos) - > timebin2) - timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos); - if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos) - > timebin2) - timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos); + if (fgStoreClusters) { + timebin1 = 0; + timebin2 = fNTimeBin - 1; + } + else { + // find first timebin to be looked at + timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPFS, fDetector, fRobPos, fMcmPos); + if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos) + < timebin1) + timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS0, fDetector, fRobPos, fMcmPos); + if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos) + < timebin1) + timebin1 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQS1, fDetector, fRobPos, fMcmPos); + + // find last timebin to be looked at + timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPFE, fDetector, fRobPos, fMcmPos); + if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos) + > timebin2) + timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE0, fDetector, fRobPos, fMcmPos); + if (fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos) + > timebin2) + timebin2 = fTrapConfig->GetTrapReg(AliTRDtrapConfig::kTPQE1, fDetector, fRobPos, fMcmPos); + } // reset the fit registers fNHits = 0; @@ -1744,26 +1751,31 @@ void AliTRDmcmSim::FitTracklet() ((AliTRDtrackletMCM*) (*fTrackletArray)[fTrackletArray->GetEntriesFast()-1])->SetOffset(fitOffset); ((AliTRDtrackletMCM*) (*fTrackletArray)[fTrackletArray->GetEntriesFast()-1])->SetError(TMath::Sqrt(TMath::Abs(fitError)/nHits)); -// // cluster information -// Float_t *res = new Float_t[nHits]; -// Float_t *qtot = new Float_t[nHits]; -// Int_t nCls = 0; -// for (Int_t iHit = 0; iHit < fNHits; iHit++) { -// // check if hit contributes -// if (fHits[iHit].fChannel == fFitPtr[cpu]) { -// res[nCls] = fHits[iHit].fYpos - (fitSlope * fHits[iHit].fTimebin + fitOffset); -// qtot[nCls] = fHits[iHit].fQtot; -// nCls++; -// } -// else if (fHits[iHit].fChannel == fFitPtr[cpu] + 1) { -// res[nCls] = fHits[iHit].fYpos + 256 - (fitSlope * fHits[iHit].fTimebin + fitOffset); -// qtot[nCls] = fHits[iHit].fQtot; -// nCls++; -// } -// } -// ((AliTRDtrackletMCM*) (*fTrackletArray)[fTrackletArray->GetEntriesFast()-1])->SetClusters(res, qtot, nCls); -// delete [] res; -// delete [] qtot; + // store cluster information (if requested) + if (fgStoreClusters) { + Float_t *res = new Float_t[fNTimeBin]; + Float_t *qtot = new Float_t[fNTimeBin]; + for (Int_t iTimebin = 0; iTimebin < fNTimeBin; ++iTimebin) { + res[iTimebin] = 0; + qtot[iTimebin] = 0; + } + for (Int_t iHit = 0; iHit < fNHits; iHit++) { + Int_t timebin = fHits[iHit].fTimebin; + + // check if hit contributes + if (fHits[iHit].fChannel == fFitPtr[cpu]) { + res[timebin] = fHits[iHit].fYpos - (fitSlope * timebin + fitOffset); + qtot[timebin] = fHits[iHit].fQtot; + } + else if (fHits[iHit].fChannel == fFitPtr[cpu] + 1) { + res[timebin] = fHits[iHit].fYpos + 256 - (fitSlope * timebin + fitOffset); + qtot[timebin] = fHits[iHit].fQtot; + } + } + ((AliTRDtrackletMCM*) (*fTrackletArray)[fTrackletArray->GetEntriesFast()-1])->SetClusters(res, qtot, fNTimeBin); + delete [] res; + delete [] qtot; + } if (fitError < 0) AliError(Form("Strange fit error: %f from Sx: %i, Sy: %i, Sxy: %i, Sx2: %i, Sy2: %i, nHits: %i", diff --git a/TRD/AliTRDmcmSim.h b/TRD/AliTRDmcmSim.h index 8a4884e0cfd..7617615138c 100644 --- a/TRD/AliTRDmcmSim.h +++ b/TRD/AliTRDmcmSim.h @@ -63,6 +63,9 @@ class AliTRDmcmSim : public TObject { // different baseline but it will not change the baseline // of the output. + static void SetStoreClusters(Bool_t storeClusters) { fgStoreClusters = storeClusters; } + static Bool_t GetStoreClusters(Bool_t storeClusters) { return fgStoreClusters; } + Int_t GetDetector() const { return fDetector; }; // Returns Chamber ID (0-539) Int_t GetRobPos() const { return fRobPos; }; // Returns ROB position (0-7) Int_t GetMcmPos() const { return fMcmPos; }; // Returns MCM position (0-17) (16,17 are mergers) @@ -246,6 +249,8 @@ class AliTRDmcmSim : public TObject { static Int_t fgAddBaseline; // add baseline to the ADC values + static Bool_t fgStoreClusters; // whether to store all clusters in the tracklets + ClassDef(AliTRDmcmSim,6) }; -- 2.43.0