AliRoot Core  ee782a0 (ee782a0)
AliTriggerConfiguration.h
Go to the documentation of this file.
1 #ifndef ALITRIGGERCONFIGURATION_H
2 #define ALITRIGGERCONFIGURATION_H
3 
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice */
6 
8 // //
9 // This class represents the CTP configuration //
10 // //
11 // //
12 // A Trigger Configuration define a trigger setup for particula run //
13 // We have default one for different running modes //
14 // (Pb-Pb, p-p, p-A, Calibration, etc). //
15 // It keep: //
16 // All the information contained in the real CTP configuration file //
17 // used online during the data taking. //
18 // //
19 // //
21 
22 #include <TNamed.h>
23 #include <TObjArray.h>
24 class TString;
25 
26 class AliTriggerCluster;
28 class AliTriggerInput;
31 class AliTriggerBCMask;
32 class AliTriggerClass;
33 
34 class AliTriggerConfiguration : public TNamed {
35 
36 public:
38  AliTriggerConfiguration( TString & name, TString & description );
39  virtual ~AliTriggerConfiguration();
40  // Setters
41  AliTriggerInput* AddInput(TString &name, TString &det, UChar_t level, UInt_t signature, UChar_t number);
42  AliTriggerInput* AddInput(TString &name, TString &det, UChar_t level, UInt_t signature, UInt_t indexCTP, UInt_t indexSwitch);
43  Bool_t AddInput(AliTriggerInput *input);
44 
45  AliTriggerInteraction* AddInteraction(TString &name, TString &logic);
46  Bool_t AddInteraction(AliTriggerInteraction *interact);
47 
48  AliTriggerInteraction* AddFunction(TString &name, TString &logic);
49  Bool_t AddFunction(AliTriggerInteraction *func);
50 
52 
53  AliTriggerBCMask* AddMask( TString &name, TString &mask );
54  Bool_t AddMask( AliTriggerBCMask* mask );
55 
56  AliTriggerCluster* AddCluster( TString &name, UChar_t index, TString &detectors );
57  Bool_t AddCluster( AliTriggerCluster* cluster );
58 
59  AliTriggerDescriptor* AddDescriptor( TString & name, TString & cond);
60  Bool_t AddDescriptor( AliTriggerDescriptor* desc );
61 
62  AliTriggerClass* AddClass( TString &name, UChar_t index,
65  UInt_t prescaler, Bool_t allrare);
66  AliTriggerClass* AddClass( TString &name, UChar_t index,
67  TString &desc, TString &clus,
68  TString &pfp, TString &mask,
69  UInt_t prescaler, Bool_t allrare);
70  Bool_t AddClass( AliTriggerClass *trclass);
71 
72  void Reset();
73 
74  // Getters
75  const char* GetPartitionName()const {return GetName();}
76  TString GetActiveDetectors() const;
77  TString GetTriggeringDetectors() const;
78  TString GetTriggeringModules() const;
79 
80  const TObjArray& GetInputs() const { return fInputs; }
81  const TObjArray& GetInteractions() const { return fInteractions; }
82  const TObjArray& GetFunctions() const { return fFunctions; }
83  const TObjArray& GetPFProtections() const { return fPFProtections; }
84  const TObjArray& GetMasks() const { return fMasks; }
85  const TObjArray& GetClusters() const { return fClusters; }
86  const TObjArray& GetDescriptors() const { return fDescriptors; }
87  const TObjArray& GetClasses() const { return fClasses; }
88 
89  Int_t GetVersion() const { return fVersion; }
90  Int_t GetClassIndexFromName(const char* className) const;
91  const char* GetClassNameFromIndex(Int_t classIndex) const;
92  AliTriggerClass* GetTriggerClass(Int_t classIndex) const;
93  // AliTriggerCluster* GetTriggerCluster(UInt_t index)
94  // { return (index < kNMaxClusters) ? (AliTriggerCluster*)fClusters[index] : NULL; }
95 
96  //AliTriggerPFProtection* GetPFProtection(UInt_t index)
97  // { return (index < kNMaxPFProtections) ? (AliTriggerPFProtection*)fPFProtections[index] : NULL; }
98  void Print( const Option_t* opt ="" ) const;
99 
100  // Configurations Database (root file)
101  void WriteConfiguration( const char* filename="" );
102  static TObjArray* GetAvailableConfigurations( const char* filename="" );
103 
104  static AliTriggerConfiguration* LoadConfiguration(TString & des);
105  static AliTriggerConfiguration* LoadConfigurationFromString(const char* configuration);
106  Bool_t IsSelected( TString detName, TString & detectors ) const;
107 
108  enum {kNMaxInputs = 64}; // CTP handles up to 60 trigger detector inputs
109  enum {kNMaxInteractions = 2}; // CTP handles up to two different interactions
110  enum {kNMaxFunctions = 4}; // CTP handles up to 4 different logical functions
111  enum {kNMaxClasses = 100}; // Maximum number of trigger classes = 50
112  enum {kNMaxClusters = 8}; // Maximum number of different detector clusters that can be handled by CTP
113  enum {kNMaxPFProtections = 4}; // Maximum number of different past-future protections that can be handled by CTP
114  enum {kNMaxMasks = 13}; // CTP handles up to 12 different BC masks + NONE
115 
116 private:
117  Bool_t ProcessConfigurationLine(const char* line, Int_t& level);
118 
119  TObjArray fInputs; // Array with active CTP inputs
120  TObjArray fInteractions; // Array with the trigger interactions
121  TObjArray fFunctions; // Array with the logical functions of the first 4 inputs
122  TObjArray fPFProtections; // Array of Past-Future Protections
123  TObjArray fMasks; // Array with BC masks
124  TObjArray fDescriptors; // Array with trigger descriptors
125  TObjArray fClusters; // Array of Detector Trigger Clusters
126  TObjArray fClasses; // Array of Trigger Classes
127 
128  Int_t fVersion; // Configuration format version
129 
130  static const TString fgkConfigurationFileName;
131 
134 
135  ClassDef( AliTriggerConfiguration, 3 ) // Define a trigger configuration
136 };
137 
138 #endif
const TObjArray & GetFunctions() const
AliTriggerDescriptor * AddDescriptor(TString &name, TString &cond)
#define TObjArray
AliTriggerClass * AddClass(TString &name, UChar_t index, AliTriggerDescriptor *desc, AliTriggerCluster *clus, AliTriggerPFProtection *pfp, AliTriggerBCMask *mask, UInt_t prescaler, Bool_t allrare)
const TObjArray & GetClasses() const
static const TString fgkConfigurationFileName
Bool_t ProcessConfigurationLine(const char *line, Int_t &level)
AliTriggerInteraction * AddInteraction(TString &name, TString &logic)
Bool_t AddPFProtection(AliTriggerPFProtection *pf)
static AliTriggerConfiguration * LoadConfiguration(TString &des)
Bool_t IsSelected(TString detName, TString &detectors) const
void WriteConfiguration(const char *filename="")
AliTriggerConfiguration & operator=(const AliTriggerConfiguration &des)
name of default configurations file
Int_t GetClassIndexFromName(const char *className) const
const TObjArray & GetDescriptors() const
const TObjArray & GetMasks() const
AliTriggerInput * AddInput(TString &name, TString &det, UChar_t level, UInt_t signature, UChar_t number)
const char * GetPartitionName() const
AliTriggerCluster * AddCluster(TString &name, UChar_t index, TString &detectors)
static TObjArray * GetAvailableConfigurations(const char *filename="")
const TObjArray & GetPFProtections() const
AliTriggerInteraction * AddFunction(TString &name, TString &logic)
AliTriggerBCMask * AddMask(TString &name, TString &mask)
AliTriggerClass * GetTriggerClass(Int_t classIndex) const
const TObjArray & GetInteractions() const
void Print(const Option_t *opt="") const
static AliTriggerConfiguration * LoadConfigurationFromString(const char *configuration)
const char * GetClassNameFromIndex(Int_t classIndex) const
const TObjArray & GetInputs() const
const TObjArray & GetClusters() const