ROOT logo
#ifndef ALITRIGGERCLASS_H
#define ALITRIGGERCLASS_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// This class represents the CTP class objects                               //
//                                                                           //
// The Class consists of Name, index in the trigger mask counted from 1,     //
// descriptor, cluster,past-future, mask, downscale, allrare,                //
// time group, time window                                                   //
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#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};  // CTP handles up to 12 different BC masks + NONE

private:
	       ULong64_t  fClassMask;    // trigger mask (1<< (index-1))
	       ULong64_t  fClassMaskNext50; // trigger mask (1<< (index-1))
	       	 UChar_t  fIndex;        // position of class in mask
    AliTriggerDescriptor* fDescriptor;   // pointer to the descriptor
       AliTriggerCluster* fCluster;      // pointer to the cluster
  AliTriggerPFProtection* fPFProtection; // pointer to the past-future protection
        AliTriggerBCMask* fMask[kNMaxMasks];         // array of pinters pointer to bunch-crossing mask
                  UInt_t  fPrescaler;    // Downscaling factor
                  Bool_t  fAllRare;      // All or Rare trigger
		  Bool_t  fStatus;       //! true = Condition has been satisfied after Trigger
		  UInt_t  fTimeGroup;    // time group
		  UInt_t  fTimeWindow;   // the size of time window for its group

  ClassDef( AliTriggerClass, 6 )  // Define a trigger class object
};

#endif
 AliTriggerClass.h:1
 AliTriggerClass.h:2
 AliTriggerClass.h:3
 AliTriggerClass.h:4
 AliTriggerClass.h:5
 AliTriggerClass.h:6
 AliTriggerClass.h:7
 AliTriggerClass.h:8
 AliTriggerClass.h:9
 AliTriggerClass.h:10
 AliTriggerClass.h:11
 AliTriggerClass.h:12
 AliTriggerClass.h:13
 AliTriggerClass.h:14
 AliTriggerClass.h:15
 AliTriggerClass.h:16
 AliTriggerClass.h:17
 AliTriggerClass.h:18
 AliTriggerClass.h:19
 AliTriggerClass.h:20
 AliTriggerClass.h:21
 AliTriggerClass.h:22
 AliTriggerClass.h:23
 AliTriggerClass.h:24
 AliTriggerClass.h:25
 AliTriggerClass.h:26
 AliTriggerClass.h:27
 AliTriggerClass.h:28
 AliTriggerClass.h:29
 AliTriggerClass.h:30
 AliTriggerClass.h:31
 AliTriggerClass.h:32
 AliTriggerClass.h:33
 AliTriggerClass.h:34
 AliTriggerClass.h:35
 AliTriggerClass.h:36
 AliTriggerClass.h:37
 AliTriggerClass.h:38
 AliTriggerClass.h:39
 AliTriggerClass.h:40
 AliTriggerClass.h:41
 AliTriggerClass.h:42
 AliTriggerClass.h:43
 AliTriggerClass.h:44
 AliTriggerClass.h:45
 AliTriggerClass.h:46
 AliTriggerClass.h:47
 AliTriggerClass.h:48
 AliTriggerClass.h:49
 AliTriggerClass.h:50
 AliTriggerClass.h:51
 AliTriggerClass.h:52
 AliTriggerClass.h:53
 AliTriggerClass.h:54
 AliTriggerClass.h:55
 AliTriggerClass.h:56
 AliTriggerClass.h:57
 AliTriggerClass.h:58
 AliTriggerClass.h:59
 AliTriggerClass.h:60
 AliTriggerClass.h:61
 AliTriggerClass.h:62
 AliTriggerClass.h:63
 AliTriggerClass.h:64
 AliTriggerClass.h:65
 AliTriggerClass.h:66
 AliTriggerClass.h:67
 AliTriggerClass.h:68
 AliTriggerClass.h:69
 AliTriggerClass.h:70
 AliTriggerClass.h:71
 AliTriggerClass.h:72
 AliTriggerClass.h:73
 AliTriggerClass.h:74
 AliTriggerClass.h:75
 AliTriggerClass.h:76
 AliTriggerClass.h:77
 AliTriggerClass.h:78
 AliTriggerClass.h:79
 AliTriggerClass.h:80
 AliTriggerClass.h:81
 AliTriggerClass.h:82
 AliTriggerClass.h:83
 AliTriggerClass.h:84
 AliTriggerClass.h:85
 AliTriggerClass.h:86
 AliTriggerClass.h:87
 AliTriggerClass.h:88
 AliTriggerClass.h:89
 AliTriggerClass.h:90