#ifndef ALITRIGGERCLASS_H
#define ALITRIGGERCLASS_H
#include <TNamed.h>
class AliTriggerConfiguration;
class AliTriggerDescriptor;
class AliTriggerCluster;
class AliTriggerPFProtection;
class AliTriggerBCMask;
class AliTriggerClass : public TNamed {
public:
AliTriggerClass();
AliTriggerClass( TString & name, UChar_t index,
AliTriggerDescriptor *desc, AliTriggerCluster *clus,
AliTriggerPFProtection *pfp, AliTriggerBCMask *mask,
UInt_t prescaler, Bool_t allrare);
AliTriggerClass( AliTriggerConfiguration *config,
TString & name, UChar_t index,
TString &desc, TString &clus,
TString &pfp, TString &mask,
UInt_t prescaler, Bool_t allrare);
AliTriggerClass( AliTriggerConfiguration *config,
TString & name, UChar_t index,
TString &desc, TString &clus,
TString &pfp,
UInt_t prescaler, Bool_t allrare,
UInt_t timegroup, UInt_t timewindow);
AliTriggerClass( const AliTriggerClass& trclass );
virtual ~AliTriggerClass();
AliTriggerClass& operator=(const AliTriggerClass& trclass);
void Reset() { fStatus = kFALSE; }
ULong64_t GetValue() const { return (fStatus) ? fClassMask : 0; }
ULong64_t GetValueNext50() const { return (fStatus) ? fClassMaskNext50 : 0; }
Bool_t GetStatus() const { return fStatus; }
ULong64_t GetMask() const { return fClassMask; }
ULong64_t GetMaskNext50() const { return fClassMaskNext50; }
AliTriggerDescriptor* GetDescriptor() const { return fDescriptor; }
AliTriggerCluster* GetCluster() const { return fCluster; }
AliTriggerBCMask* GetBCMask() const { return fMask[0]; }
UInt_t GetTimeGroup() const { return fTimeGroup; }
UInt_t GetTimeWindow() const { return fTimeGroup; }
UInt_t GetPrescaler() const { return fPrescaler; }
Int_t GetDownscaleFactor(Double_t &ds) const;
Bool_t SetMasks(AliTriggerConfiguration *config,TString &mask);
void Trigger( const TObjArray& inputs , const TObjArray& functions);
void Print( const Option_t* ) const;
Bool_t CheckClass(AliTriggerConfiguration *config) const;
Bool_t IsActive( const TObjArray& inputs, const TObjArray& functions) const;
enum {kNMaxMasks = 13};
private:
ULong64_t fClassMask;
ULong64_t fClassMaskNext50;
UChar_t fIndex;
AliTriggerDescriptor* fDescriptor;
AliTriggerCluster* fCluster;
AliTriggerPFProtection* fPFProtection;
AliTriggerBCMask* fMask[kNMaxMasks];
UInt_t fPrescaler;
Bool_t fAllRare;
Bool_t fStatus;
UInt_t fTimeGroup;
UInt_t fTimeWindow;
ClassDef( AliTriggerClass, 6 )
};
#endif