From a0dc51a6603ce8406da97f9cda8de4d8228f388a Mon Sep 17 00:00:00 2001 From: pcrochet Date: Fri, 24 Mar 2006 12:01:32 +0000 Subject: [PATCH] bugs fixed (Diego) --- MUON/AliMUONDataIterator.cxx | 6 +++--- MUON/AliMUONDigitizerV3.cxx | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/MUON/AliMUONDataIterator.cxx b/MUON/AliMUONDataIterator.cxx index fc2821809b6..135d261c31d 100644 --- a/MUON/AliMUONDataIterator.cxx +++ b/MUON/AliMUONDataIterator.cxx @@ -100,7 +100,7 @@ AliMUONDataIterator::~AliMUONDataIterator() TObject* AliMUONDataIterator::Next() { - if (!fIterator) return fIterator->Next(); + if (fIterator) return fIterator->Next(); return 0x0; } @@ -108,7 +108,7 @@ AliMUONDataIterator::Next() Bool_t AliMUONDataIterator::Remove() { - if (!fIterator) return fIterator->Remove(); + if (fIterator) return fIterator->Remove(); return kFALSE; } @@ -116,5 +116,5 @@ AliMUONDataIterator::Remove() void AliMUONDataIterator::Reset() { - if (!fIterator) fIterator->Reset(); + if (fIterator) fIterator->Reset(); } diff --git a/MUON/AliMUONDigitizerV3.cxx b/MUON/AliMUONDigitizerV3.cxx index c3ba71044b2..aca71413fb9 100644 --- a/MUON/AliMUONDigitizerV3.cxx +++ b/MUON/AliMUONDigitizerV3.cxx @@ -234,6 +234,8 @@ AliMUONDigitizerV3::ApplyResponseToTriggerDigit(AliMUONDigit& digit, AliMUONDigit* correspondingDigit = FindCorrespondingDigit(digit,data); + if(!correspondingDigit)return;//reject bad correspondences + Int_t detElemId = digit.DetElemId(); const AliMpVSegmentation* segment[2] = @@ -479,11 +481,26 @@ AliMUONDigit* AliMUONDigitizerV3::FindCorrespondingDigit(AliMUONDigit& digit, AliMUONData* data) { - AliMUONDataIterator it(data,"D",AliMUONDataIterator::kAllChambers); + AliMUONDataIterator it(data,"D",AliMUONDataIterator::kTriggerChambers); AliMUONDigit* cd; + + for(;;){ + cd = static_cast(it.Next()); + if(!cd)continue; + if (cd->DetElemId() == digit.DetElemId() && + cd->PadX() == digit.PadX() && + cd->PadY() == digit.PadY() && + cd->Cathode() == digit.Cathode()){ + break; + } + } + //The corresponding digit is searched only forward in the AliMUONData. + //In this way when the first digit of the couple is given, the second digit is found and the efficiency is applied to both. + //Afterwards, when the second digit of the couple is given the first one is not found and hence efficiency is not applied again while ( ( cd = static_cast(it.Next()) ) ) { + if(!cd)continue;//avoid problems when 1 digit is removed if ( cd->DetElemId() == digit.DetElemId() && cd->Hit() == digit.Hit() && cd->Cathode() != digit.Cathode() ) -- 2.31.1