ROOT logo
#ifndef ALICENTRALTRIGGER_H
#define ALICENTRALTRIGGER_H

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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// This class for running the Central Trigger Processor                      //
//                                                                           //
//                                                                           //
//    Load Configuration                                                     //
//    Make a list the trigger detectors involved ( from the configuration)   //
//    For the each event                                                     //
//           Run the Trigger for the each detector                           //
//           Get the inputs                                                  //
//           Check the trigger classes                                       //
//           Create the class mask                                           //
//           Save result                                                     //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include <TObjArray.h>

class TTree;
class AliRunLoader;
class AliTriggerConfiguration;

class AliCentralTrigger : public TObject {

public:
                          AliCentralTrigger();
                          AliCentralTrigger( TString & config );
               virtual   ~AliCentralTrigger();

                Bool_t    LoadConfiguration( TString & config );
                Bool_t    RunTrigger( AliRunLoader * runloader , const char* detectors);
             ULong64_t    TriggerClasses();
	          void    TriggerInputs();
                  void    Reset();
		  void    DeleteConfiguration();
                  void    MakeBranch( TString name, TTree * tree );
  //  Getters
               TString    GetDetectors();
             ULong64_t    GetClassMask() const { return fClassMask; }
             ULong64_t    GetClassMaskNext50() const { return fClassMaskNext50; }
	        UInt_t    GetClusterMask() const { return fClusterMask; }
	     	UInt_t    GetL0TriggerInputs() const { return fL0TriggerInputs; }
	     	UInt_t    GetL1TriggerInputs() const { return fL1TriggerInputs; }
	      UShort_t    GetL2TriggerInputs() const { return fL2TriggerInputs; }
 AliTriggerConfiguration* GetConfiguration() { return fConfiguration; }
             TObjArray*   GetFiredClasses() const;
                  void    Print( const Option_t* opt ="" ) const;
	        Bool_t    CheckTriggeredDetectors() const;

	       // Setters to be used in case raw data when the trigger information
	       // is read from the event header
	       void       SetClassMask(ULong64_t mask) { fClassMask = mask; }
	       void       SetClassMaskNext50(ULong64_t mask) { fClassMaskNext50 = mask; }
	       void       SetClusterMask(UInt_t mask)  { fClusterMask = mask; }
	       void       SetL0TriggerInputs(UInt_t mask)  { fL0TriggerInputs = mask; }
	       void       SetL1TriggerInputs(UInt_t mask)  { fL1TriggerInputs = mask; }
	       void       SetL2TriggerInputs(UShort_t mask)  { fL2TriggerInputs = mask; }
protected:
             ULong64_t    fClassMask;          // UID ( bitwise OR of conditions mask )
             ULong64_t    fClassMaskNext50;    // UID ( bitwise OR of conditions mask )  high 50 bits for run2
                UInt_t    fClusterMask;        // UID ( bitwise OR of clusters mask - detector pattern)
    	        UInt_t    fL0TriggerInputs;    // L0 trigger inputs (24 bits)
                UInt_t    fL1TriggerInputs;    // L1 trigger inputs (24 bits)
              UShort_t    fL2TriggerInputs;    // L2 trigger inputs (12 bits)

 AliTriggerConfiguration* fConfiguration;      // Trigger Configuration used

private:
                void      SetOwner(Bool_t x=kTRUE){SetBit(22,x);} // Bit 22 indicates that the object owns fConfiguration
                Bool_t    IsOwner() const {return TestBit(22);} // Test bit 22 to check that the object owns fConfiguration
                Bool_t    IsSelected( TString detName, TString& detectors ) const;
		AliCentralTrigger( const AliCentralTrigger& ctp ); // Implemented
		AliCentralTrigger& operator=( const AliCentralTrigger& ctp ); // Not implemented

   ClassDef( AliCentralTrigger, 6 )  // class for running the Central Trigger Processor
};


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