ROOT logo
#ifndef ALITRIGGERINPUT_H
#define ALITRIGGERINPUT_H

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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//
//  Class to define a Trigger Input from an specific detector                                                                                           //
//
//
//                        name         description     id mask
//    Ej:
//      AliTriggerInput( "V0_MB_L0", "VO minimum bias", 0x01 );
//      AliTriggerInput( "V0_SC_L0", "VO semi central", 0x02 );
//      AliTriggerInput( "V0_C_L0",  "VO central",      0x04 );

//    The name must be globaly unique. Spaces are not allowed.
//    As convention should start with detector name then an id
//    and the trigger level (L0, L1, L2)
//
//    A maximun of 60 inputs trigger are allow.
//    So, the id mask should set only bit from the position 1 to 60.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include <TNamed.h>
#endif

#include "AliDAQ.h"

class AliTriggerInput : public TNamed {

public:
                          AliTriggerInput(): TNamed(),
			    fMask( 0 ),
			    fValue( 0 ),
			    fSignature( -1),
			    fLevel(0),
			    fDetectorId(-1),
			    fIsActive(kFALSE)
			    {}
                          AliTriggerInput( TString name, TString det, UChar_t level, Int_t signature = -1, Char_t number = -1);
                          AliTriggerInput( AliTriggerInput & inp )
			    : TNamed( inp ),
			    fMask( inp.fMask ),
			    fValue( inp.fValue ),
			    fSignature( inp.fSignature ),
			    fLevel( inp.fLevel),
			    fDetectorId( inp.fDetectorId),
			    fIsActive(kFALSE)
			    {}
               virtual   ~AliTriggerInput() {}

  //  Setters
                  void    Set()   { if (fIsActive) fValue = fMask; }
                  void    Reset() { fValue = 0; }
         	  void    Enable() { fIsActive = kTRUE; }

  //  Getters
                Bool_t    Status() const   { return (Bool_t)fValue; }
             ULong64_t    GetValue() const { return fValue; }
             ULong64_t    GetMask() const  { return fMask; }
	        Int_t     GetSignature() const { return fSignature; }
	       TString    GetInputName() const { return GetName(); }
               TString    GetDetector() const { return GetTitle(); }
	       TString    GetModule() const;
	        Char_t    GetDetectorId() const { return fDetectorId; }
	       UChar_t    GetLevel() const { return fLevel; }
	        Bool_t    IsActive() const { return fIsActive; }

           virtual void   Print( const Option_t* opt ="" ) const;

	   static Bool_t  fgkIsTriggerDetector[AliDAQ::kNDetectors]; // List of trigger detectors
   static  const char*    fgkCTPDetectorName[AliDAQ::kNDetectors];
protected:
             ULong64_t    fMask;                //  Trigger ID mask (1 bit)
             ULong64_t    fValue;               //  Trigger Signal (0 = false, > 1 = true = fMask )
		Int_t     fSignature;           //  8 bit signature (internal CTP inputs can have longer signature)
		UChar_t   fLevel;               //  L0, L1 or L2
		Char_t    fDetectorId;          //  Alice-wide detector id, see AliDAQ class for details
	        Bool_t    fIsActive;            //  Is trigger input active (during simulation)
//                  void    fDectParameterTable;  //-> link to detector parameter table????

   ClassDef( AliTriggerInput, 4 )  // Define a Trigger Input
};


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