]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/trigger/menu/HM-PHYSICS-V0001.C
adding explicite trigger domain entries for blocks to be
[u/mrichter/AliRoot.git] / HLT / trigger / menu / HM-PHYSICS-V0001.C
1 // $Id$
2 /**
3  * @ingroup trigger_manus
4  * @file HM_PHYSICS_V0001.C
5  * @brief Macro for generating the trigger menu CDB entry for the HLT global trigger.
6  *
7  * This macro generates the HM-PHYSICS-V0001 global trigger configuration
8  * and the trigger component configurations.
9  * It is an experts macro so make sure you know what you are doing.
10  *
11  * You can run this macro with defaults using the following shell command:
12  * @code
13  *   > aliroot -b -q $ALICE_ROOT/HLT/trigger/HM_PHYSICS_V0001.C
14  * @endcode
15  *
16  * Initial configuration:
17  *  1. Trigger items based on TPC tracks
18  *  ------------------------------------
19  *  a) H-TRACK_MULTIPLICITY-V0002.001-CENTRAL-ALL   min 10 tracks
20  *     Trigger name: BarrelMultiplicityTrigger
21  *  b) H-TRACK_MULTIPLICITY-V0002.002-CENTRAL-ALL   min 100 tracks
22  *     Trigger name: BarrelHighMultiplicity
23  *  c) H-TRACK_MULTIPLICITY-V0002.003-CENTRAL-ALL   min 1 tracks pt > 0.5 GeV
24  *     Trigger name: BarrelPt_v01
25  *  d) H-TRACK_MULTIPLICITY-V0002.004-CENTRAL-ALL   min 1 tracks pt > 1 GeV
26  *     Trigger name: BarrelPt_v02
27  *  e) H-TRACK_MULTIPLICITY-V0002.005-CENTRAL-ALL   min 1 tracks pt > 5 GeV
28  *     Trigger name: BarrelPt_v03
29  *
30  *  2. Min bias trigger
31  *  -----------------------------
32  *  every 100th event
33  *
34  * ChangeLog:
35  *  2009-12-04    adding explicite trigger domain entries for blocks to be
36  *                included in 'domainHLTOUT' in order to avoid wildcards in
37  *                the definition of domain entries
38  * @author Matthias.Richter@ift.uib.no
39  */
40
41 #if !defined(__CINT__) || defined(__MAKECINT__)
42 #include "AliCDBManager.h"
43 #include "AliCDBStorage.h"
44 #include "AliCDBEntry.h"
45 #include "AliHLTTriggerMenu.h"
46 #include "AliHLTGlobalTriggerConfig.h"
47 #include "TObjString.h"
48 #include "TString.h"
49 #include "TSystem.h"
50 #include "Riostream.h"
51 using std::cerr;
52 using std::endl;
53 #endif
54
55 /**
56  * Generates a default CDB entry for the trigger menu in the given CDB storage
57  * (local by default).
58  * \param cdbPath  The path to the default CDB storage.
59  */
60 void HM_PHYSICS_V0001(
61                       const char* cdbPath = "local://$ALICE_ROOT/OCDB",
62                       Int_t version = 0,
63                       Int_t firstRun = 0,
64                       Int_t lastRun = AliCDBRunRange::Infinity()
65                       ) {
66   gSystem->Load("libAliHLTTrigger.so");
67   
68   // Setup the CDB default storage and run number.
69   AliCDBManager* cdbManager = AliCDBManager::Instance();
70   if (cdbManager == NULL) {
71     cerr << "ERROR: Global CDB manager object does not exist." << endl;
72     return;
73   }
74
75   AliCDBStorage* storage = cdbManager->GetStorage(cdbPath);
76   if (storage == NULL) {
77     cerr << "ERROR: Could not get storage for: " << cdbPath << endl;
78     return;
79   }
80
81   // /////////////////////////////////////////////////////////////////////////////////////////  
82   // Create the trigger menu.
83   AliHLTGlobalTriggerConfig config("HM-COSMICS-V0001");
84
85   //config.AddSymbol("triggerClasses", "AliHLTUInt64_t", "this->GetTriggerClasses()", "0x0", "AliHLTEventSummary");
86   //config.AddItem("triggerClasses != 0x0", "domainAll", "CTP triggered");
87
88   config.AddSymbol("domainAll", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:***\")");
89   
90   // /////////////////////////////////////////////////////////////////////////////////////////  
91   // the domain definitions for the global HLT output and the HLT DDLs
92   //config.AddSymbol("domainHLTOUT", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:HLT \")");
93   config.AddSymbol("domainHLTDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:HLT\\0\")");
94
95   // some explicite domain entries
96   config.AddSymbol("domainTObject"   , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ROOTTOBJ:HLT \")");
97   config.AddSymbol("domainESD"       , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ALIESDV0:HLT \")");
98   config.AddSymbol("domainHistogram" , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ROOTHIST:HLT \")");
99
100   config.AddSymbol("domainSPDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISPD\")");
101   config.AddSymbol("domainSDDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISDD\")");
102   config.AddSymbol("domainSSDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISSD\")");
103   config.AddSymbol("domainTPCCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:TPC \")");
104
105   // an explicite HLTOUT selection which avoids wildcards
106   config.AddSymbol("domainHLTOUT", "AliHLTTriggerDomain", "", 
107                    "domainTObject    | "
108                    "domainESD        | "
109                    "domainHistogram  | "
110                    "domainSPDCluster | "
111                    "domainSDDCluster | "
112                    "domainSSDCluster | "
113                    "domainTPCCluster"
114                    );
115
116   // /////////////////////////////////////////////////////////////////////////////////////////  
117   // -- DETECTOR READOUT DOMAINS
118   config.AddSymbol("domainSPDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SPD\\0\")");
119   config.AddSymbol("domainSDDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SDD\\0\")");
120   config.AddSymbol("domainSSDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SSD\\0\")");
121   config.AddSymbol("domainTPCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TPC\\0\")");
122   config.AddSymbol("domainTRDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TRD\\0\")");
123   config.AddSymbol("domainTOFDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TOF\\0\")");
124   config.AddSymbol("domainHMPDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:HMP\\0\")");
125   config.AddSymbol("domainPHSDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:PHS\\0\")");
126   config.AddSymbol("domainCPVDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:CPV\\0\")");
127   config.AddSymbol("domainPMDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:PMD\\0\")");
128   config.AddSymbol("domainMCHDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:MCH\\0\")");
129   config.AddSymbol("domainMTRDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:MTR\\0\")");
130   config.AddSymbol("domainFMDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:FMD\\0\")");
131   config.AddSymbol("domainT00DDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:T00\\0\")");
132   config.AddSymbol("domainV00DDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:V00\\0\")");
133   config.AddSymbol("domainZDCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:ZDC\\0\")");
134   config.AddSymbol("domainACODDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:ACO\\0\")");
135   config.AddSymbol("domainCTPDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TRI\\0\")");
136   config.AddSymbol("domainEMCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:EMC\\0\")");
137
138   // /////////////////////////////////////////////////////////////////////////////////////////  
139   // -- DETECTOR READOUT DOMAINS - SPECIAL
140   config.AddSymbol("domainALLDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:***\\0\")");
141   
142   // /////////////////////////////////////////////////////////////////////////////////////////  
143   // NOTE: always make sure that the global HLT output and the HLT DDLs are included
144   // in the readout, i.e. add domainHLTOUT|domainHLTDDL to the trigger domain
145
146   // -- BarrelMultiplicity
147   config.AddItem(
148                  "BarrelMultiplicityTrigger", 
149                  "domainHLTOUT|domainALLDDL", 
150                  "H-TRACK_MULTIPLICITY-V0002.001-CENTRAL-ALL"
151                  );
152
153   config.AddItem(
154                  "BarrelHighMultiplicity", 
155                  "domainHLTOUT|domainALLDDL", 
156                  "H-TRACK_MULTIPLICITY-V0002.002-CENTRAL-ALL"
157                  );
158
159   config.AddItem(
160                  "BarrelPt_v01", 
161                  "domainHLTOUT|domainALLDDL", 
162                  "H-TRACK_MULTIPLICITY-V0002.003-CENTRAL-ALL"
163                  );
164
165   config.AddItem(
166                  "BarrelPt_v01", 
167                  "domainHLTOUT|domainALLDDL", 
168                  "H-TRACK_MULTIPLICITY-V0002.004-CENTRAL-ALL"
169                  );
170
171   config.AddItem(
172                  "BarrelPt_v01", 
173                  "domainHLTOUT|domainALLDDL", 
174                  "H-TRACK_MULTIPLICITY-V0002.005-CENTRAL-ALL"
175                  );
176
177   // -- Min bias trigger
178   config.AddItem(
179                  "true",
180                  "domainALLDDL|domainHLTOUT", 
181                  10, "H-MINBIAS_SCALE_DOWN-V0002.001-CENTRAL-ALL"
182                  );
183
184   
185   // /////////////////////////////////////////////////////////////////////////////////////////  
186   // default domain in case there is no global trigger
187   // readout the output of the reconstruction
188   // this refers to the domain domainHLTOUT|domainHLTDDL
189   config.SetDefaultTriggerDescription("No HLT global trigger");
190
191   // HLT payload also stored for not triggered events
192   config.DefaultTriggerDomain().Add("*******", "HLT ");
193   AliHLTReadoutList readoutlist;
194   readoutlist.Enable(AliHLTReadoutList::kHLT);
195   config.DefaultTriggerDomain().Add(readoutlist);
196   
197   
198   TObject* menu = AliHLTGlobalTriggerConfig::Menu()->Clone();
199   menu->Print();
200   
201   // /////////////////////////////////////////////////////////////////////////////////////////  
202   // Write the trigger menu object to the CDB.
203   AliCDBId id("HLT/ConfigHLT/HLTGlobalTrigger", firstRun, lastRun, version);
204   AliCDBMetaData* metaData = new AliCDBMetaData();
205   metaData->SetResponsible("ALICE HLT Matthias.Richter@cern.ch");
206   metaData->SetComment("HM-PHYSICS-V0001");
207   storage->Put(menu, id, metaData);
208
209
210   // /////////////////////////////////////////////////////////////////////////////////////////  
211   // /////////////////////////////////////////////////////////////////////////////////////////  
212   // /////////////////////////////////////////////////////////////////////////////////////////  
213   //
214   // component configurations
215   gROOT->LoadMacro("$ALICE_ROOT/HLT/exa/makeComponentConfigurationObject.C");
216
217   // /////////////////////////////////////////////////////////////////////////////////////////  
218   // configuration of BarrelMultiplicityTrigger instances
219   makeComponentConfigurationObject("HLT/ConfigHLT/BarrelMultiplicityTrigger", "-mintracks 10");
220   makeComponentConfigurationObject("HLT/ConfigHLT/BarrelHighMultiplicity", "-mintracks 100");
221   makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v01", "-mintracks 1 -minpt 0.5");
222   makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v02", "-mintracks 1 -minpt 1.0");
223   makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v03", "-mintracks 1 -minpt 5.0");
224 }