/// Sets the maximum number of local cards in the DDL.
virtual void SetMaxLoc(Int_t loc);
- /// Return number of the current DDL being handled.
+ /// Return number of the current DDL being handled in the range [0..1] and -1 if no DDL set.
virtual Int_t GetDDL() const { return fDDL - 1; }
/// check error/Warning presence
/// Set warnings flag to enable warnings on data errors.
virtual void EnableWarnings() { fDecoder.GetHandler().Warnings(kTRUE); }
- /// Get number of end of DARC word errors.
+ /// Get number of end of DARC word errors in the DDL last decoded.
UInt_t GetDarcEoWErrors() const {return fDecoder.GetHandler().GetDarcEoWErrors();}
- /// Get number of end of Global word errors.
+ /// Get number of end of Global word errors in the DDL last decoded.
UInt_t GetGlobalEoWErrors() const {return fDecoder.GetHandler().GetGlobalEoWErrors();}
- /// Get number of end of regional word errors.
+ /// Get number of end of regional word errors in the DDL last decoded.
UInt_t GetRegEoWErrors() const {return fDecoder.GetHandler().GetRegEoWErrors();}
- /// Get number of end of local word errors.
+ /// Get number of end of local word errors in the DDL last decoded.
UInt_t GetLocalEoWErrors() const {return fDecoder.GetHandler().GetLocalEoWErrors();}
+ /// Number of end of DARC word errors since First() was called.
+ UInt_t NumberOfDarcEoWErrors() const { return fTotalNumberOfDarcEoWErrors; }
+
+ /// Number of end of global word errors since First() was called.
+ UInt_t NumberOfGlobalEoWErrors() const { return fTotalNumberOfGlobalEoWErrors; }
+
+ /// Number of end of regional word errors since First() was called.
+ UInt_t NumberOfRegEoWErrors() const { return fTotalNumberOfRegEoWErrors; }
+
+ /// Number of end of local word errors since First() was called.
+ UInt_t NumberOfLocalEoWErrors() const { return fTotalNumberOfLocalEoWErrors; }
+
+ /// Whether we got any end of DARC word errors or not since calling First().
+ Bool_t HasDarcEoWError() const { return NumberOfDarcEoWErrors() > 0; }
+
+ /// Whether we got any end of global word errors or not since calling First().
+ Bool_t HasGlobalEoWError() const { return NumberOfGlobalEoWErrors() > 0; }
+
+ /// Whether we got any end of regional word errors or not since calling First().
+ Bool_t HasRegEoWError() const { return NumberOfRegEoWErrors() > 0; }
+
+ /// Whether we got any end of local word errors or not since calling First().
+ Bool_t HasLocalEoWError() const { return NumberOfLocalEoWErrors() > 0; }
+
/// Returns the "try to recover from errors" flag.
Bool_t TryRecover() const { return Bool_t(fDecoder.TryRecover()); }
const AliMUONLocalScalarsStruct* scalars = NULL
) :
fRegional(regionalHeader), fNext(NULL),
- fLocalStruct(localStruct), fScalars(scalars)
+ fLocalStruct(localStruct), fScalars(scalars),
+ fCalculatedId(0)
{
}
/// Implement shallow copying in the copy constructor.
AliLocalStruct(const AliLocalStruct& o) :
fRegional(o.fRegional), fNext(o.fNext),
- fLocalStruct(o.fLocalStruct), fScalars(o.fScalars)
+ fLocalStruct(o.fLocalStruct), fScalars(o.fScalars),
+ fCalculatedId(o.fCalculatedId)
{
}
/// return X pattern array
void GetXPattern(TArrayS& array) const
{
- Short_t vec[4] = {GetX1(), GetX2(), GetX3(), GetX4()};
+ Short_t vec[4] = {static_cast<Short_t>(GetX1()), static_cast<Short_t>(GetX2()), static_cast<Short_t>(GetX3()), static_cast<Short_t>(GetX4())};
array.Set(4, vec);
}
/// return Y pattern array
void GetYPattern(TArrayS& array) const
{
- Short_t vec[4] = {GetY1(), GetY2(), GetY3(), GetY4()};
+ Short_t vec[4] = {static_cast<Short_t>(GetY1()), static_cast<Short_t>(GetY2()), static_cast<Short_t>(GetY3()), static_cast<Short_t>(GetY4())};
array.Set(4, vec);
}
/// Return Id
- UChar_t GetId() const {return AliMUONTriggerDDLDecoderEventHandler::GetLocalId(fLocalStruct);}
+ UChar_t GetId() const {return fgOverrideId ? fCalculatedId : AliMUONTriggerDDLDecoderEventHandler::GetLocalId(fLocalStruct);}
/// Return Dec
UChar_t GetDec() const {return AliMUONTriggerDDLDecoderEventHandler::GetLocalDec(fLocalStruct);}
/// Return TrigY
/// Sets the next local trigger structure.
void SetNext(const AliLocalStruct* next) { fNext = next; }
+
+ /// Sets the calculated ID value to be returned by GetId if fgOverrideId is true.
+ void SetCalculatedId(UChar_t id) { fCalculatedId = id; }
/// Print the contents of the local trigger structure and contents to screen.
void Print() const;
+
+ /// Returns the override flag indicating if the GetId method should return the calculated Id value or not.
+ static bool GetOverrideIdFlag() { return fgOverrideId; }
+
+ /// Sets the override flag to control what value the GetId method returns.
+ static void SetOverrideIdFlag(bool value) { fgOverrideId = value; }
private:
const AliLocalStruct* fNext; ///< Next local structure object in the regional structure.
const AliMUONLocalInfoStruct* fLocalStruct; ///< Pointer to the local trigger structure data in the DDL payload.
const AliMUONLocalScalarsStruct* fScalars; ///< Pointer to the local trigger scalars data in the DDL payload.
+ UChar_t fCalculatedId; ///< Calculated ID value returned by GetId() if fgOverrideId == true.
+ static bool fgOverrideId; //!< Flag indicating if we should return a calculated number in the GetId method.
};
/// Returns the DARC and global headers plus scalars if they exist.
const void* data);
/// Handler for new local card structures.
- void OnLocalStruct(const AliMUONLocalInfoStruct* localStruct,
- const AliMUONLocalScalarsStruct* scalars);
+ void OnLocalStructV2(UInt_t iLoc,
+ const AliMUONLocalInfoStruct* localStruct,
+ const AliMUONLocalScalarsStruct* scalars);
/// Error handler.
void OnError(ErrorCode error, const void* location);
Bool_t fHadError; //!< Flag indicating if there was a decoding error or not.
Bool_t fDone; //!< Flag indicating if the iteration is done or not.
mutable AliMUONDDLTrigger* fDDLObject; //!< Temporary DDL object used by GetDDLTrigger() for caching.
+ UInt_t fTotalNumberOfDarcEoWErrors; //!< The total number of end of DARC word errors since the last call to First().
+ UInt_t fTotalNumberOfGlobalEoWErrors; //!< The total number of end of global word errors since the last call to First().
+ UInt_t fTotalNumberOfRegEoWErrors; //!< The total number of end of regional word errors since the last call to First().
+ UInt_t fTotalNumberOfLocalEoWErrors; //!< The total number of end of local word errors since the last call to First().
static const Int_t fgkMaxDDL; //!< Maximum number of DDLs
}
-inline void AliMUONRawStreamTriggerHP::AliDecoderEventHandler::OnLocalStruct(
+inline void AliMUONRawStreamTriggerHP::AliDecoderEventHandler::OnLocalStructV2(
+ UInt_t iLoc,
const AliMUONLocalInfoStruct* localStruct,
const AliMUONLocalScalarsStruct* scalars
)
fCurrentLocal++;
*fCurrentLocal = AliLocalStruct(fCurrentRegional, localStruct, scalars);
+ fCurrentLocal->SetCalculatedId(iLoc);
fCurrentRegional->IncLocalStructCount();
}