ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/TreeMod/src/HLTFwkMod.cc
(Generate patch)

Comparing UserCode/MitAna/TreeMod/src/HLTFwkMod.cc (file contents):
Revision 1.1 by loizides, Sun Sep 28 02:38:40 2008 UTC vs.
Revision 1.16 by bendavid, Sun May 15 20:40:30 2011 UTC

# Line 3 | Line 3
3   #include "MitAna/TreeMod/interface/HLTFwkMod.h"
4   #include <TFile.h>
5   #include <TTree.h>
6 + #include "MitAna/DataUtil/interface/Debug.h"
7   #include "MitAna/DataTree/interface/Names.h"
8   #include "MitAna/DataTree/interface/TriggerName.h"
9 < #include "MitAna/DataTree/interface/TriggerObject.h"
9 > #include "MitAna/DataTree/interface/TriggerTable.h"
10 > #include "MitAna/DataTree/interface/TriggerObjectBaseCol.h"
11 > #include "MitAna/DataTree/interface/TriggerObjectRelCol.h"
12 > #include "MitAna/DataTree/interface/TriggerObjectCol.h"
13 > #include "MitAna/DataTree/interface/TriggerObjectsTable.h"
14  
15   using namespace mithep;
16  
# Line 23 | Line 28 | HLTFwkMod::HLTFwkMod(const char *name, c
28    fHLTTabNamePub(Form("%sFwk",fHLTTabName.Data())),
29    fHLTLabNamePub(Form("%sFwk",fHLTLabName.Data())),
30    fObjsNamePub(Form("%sFwk",fObjsName.Data())),
31 <  fNMaxTriggers(256),
31 >  fL1ATabNamePub("L1AlgoTableFwk"),
32 >  fL1TTabNamePub("L1TechTableFwk"),
33 >  fNMaxTriggers(1024),
34    fObjs(0),
35    fRels(0),
36    fReload(0),
# Line 33 | Line 40 | HLTFwkMod::HLTFwkMod(const char *name, c
40    fCurEnt(-2),
41    fTriggers(new TriggerTable(fNMaxTriggers)),
42    fLabels(new TriggerTable(fNMaxTriggers*16)),
43 <  fTrigObjs(new TriggerObjectsTable(fTriggers,fNMaxTriggers))
43 >  fTrigObjs(new TriggerObjectsTable(fTriggers,fNMaxTriggers)),
44 >  fL1Algos(new TriggerTable(fNMaxTriggers)),
45 >  fL1Techs(new TriggerTable(fNMaxTriggers))
46   {
47    // Constructor.
48  
# Line 43 | Line 52 | HLTFwkMod::HLTFwkMod(const char *name, c
52    fLabels->SetOwner();
53    fTrigObjs->SetName(fObjsNamePub);
54    fTrigObjs->SetOwner();
55 +  fL1Algos->SetName(fL1ATabNamePub);
56 +  fL1Algos->SetOwner();
57 +  fL1Techs->SetName(fL1TTabNamePub);
58 +  fL1Techs->SetOwner();
59   }
60  
61   //--------------------------------------------------------------------------------------------------
# Line 61 | Line 74 | HLTFwkMod::~HLTFwkMod()
74    fLabels   = 0;
75    delete fTrigObjs;
76    fTrigObjs = 0;
77 +  delete fL1Algos;
78 +
79   }
80  
81   //--------------------------------------------------------------------------------------------------
# Line 87 | Line 102 | void HLTFwkMod::BeginRun()
102      fHLTTree = dynamic_cast<TTree*>(file->Get(fHLTTreeName));
103      if (!fHLTTree) {
104        SendError(kAbortAnalysis, "BeginRun",
105 <                "Can not find HLT tree with name %s", fHLTTreeName.Data());
105 >                "Cannot find HLT tree with name %s.", fHLTTreeName.Data());
106      }
107  
108      // get HLT trigger name branch
# Line 95 | Line 110 | void HLTFwkMod::BeginRun()
110        fHLTTree->SetBranchAddress(fHLTTabName, &fHLTTab);
111      } else {
112        SendError(kAbortAnalysis, "BeginRun",
113 <                "Can not find HLT tree branch with name %s", fHLTTabName.Data());
113 >                "Cannot find HLT tree branch with name %s.", fHLTTabName.Data());
114      }
115  
116      // get HLT module labels branch
# Line 103 | Line 118 | void HLTFwkMod::BeginRun()
118        fHLTTree->SetBranchAddress(fHLTLabName, &fHLTLab);
119      } else {
120        SendError(kAbortAnalysis, "BeginRun",
121 <                "Can not find HLT tree branch with name %s", fHLTLabName.Data());
121 >                "Cannot find HLT tree branch with name %s.", fHLTLabName.Data());
122      }
123    }
124  
# Line 111 | Line 126 | void HLTFwkMod::BeginRun()
126    const RunInfo *runinfo = GetRunInfo();
127    if (!runinfo) {
128      SendError(kAbortAnalysis, "BeginRun",
129 <              "Can not obtain run info object from selector");
129 >              "Cannot obtain run info object from selector.");
130      return;
131    }
132  
133    // load trigger table
134    if (runinfo->HltEntry()!=fCurEnt) {
135 +    MDB(kAnalysis, 1)
136 +      Info("BeginRun", "Loading trigger table for run %u", runinfo->RunNum());
137 +    
138      fCurEnt = runinfo->HltEntry();
139      Bool_t load = LoadTriggerTable();
140      if (!load) {
141        SendError(kAbortAnalysis, "BeginRun",
142 <                "Can not obtain load trigger table info");
142 >                "Cannot load trigger table for next entry (%ld).", fCurEnt);
143        return;
144      }
145 +
146 +    MDB(kAnalysis, 2) {
147 +      Info("BeginRun", "Printing tables for run %u", runinfo->RunNum());
148 +      cout << " --- Trigger table ---" << endl;
149 +      fTriggers->Print();
150 +      cout << " --- Module lables ---" << endl;
151 +      fLabels->Print();
152 +      if (fL1Algos->GetEntries()) {
153 +        cout << " --- L1 Algos ---" << endl;
154 +        fL1Algos->Print();
155 +      }
156 +      if (fL1Techs->GetEntries()) {
157 +        cout << " --- L1 Techs ---" << endl;
158 +        fL1Techs->Print();
159 +      }
160 +    }
161    }
162   }
163  
# Line 138 | Line 172 | Bool_t HLTFwkMod::LoadTriggerTable()
172    // delete old tables
173    fTriggers->Delete();
174    fLabels->Delete();
175 +  fL1Algos->Delete();
176 +  fL1Techs->Delete();
177  
178    // load next event in HLT tree
179    fHLTTab = 0;
180    fHLTLab = 0;
181    Int_t ret = fHLTTree->GetEvent(fCurEnt);
182    if (ret<0 || fHLTTab==0 || fHLTTab==0 ) {
183 <    ::Error("LoadTriggerTable", "Could not get entries for next event %ud", fCurEnt);
183 >    SendError(kAbortAnalysis, "LoadTriggerTable",
184 >              "Could not get trigger data for next entry (%ld).", fCurEnt);
185      return kFALSE;
186    }
187  
188    // check size of trigger table
189 <  if (fHLTTab->Entries()>fNMaxTriggers) {
189 >  if (fHLTTab->size()>fNMaxTriggers) {
190      SendError(kAbortAnalysis, "LoadTriggerTable",
191 <              "Size of trigger table (%d) larger than maximum (%d)",
192 <              fHLTTab->Entries(), fNMaxTriggers);
191 >              "Size of trigger table (%ld) larger than maximum (%ld).",
192 >              fHLTTab->size(), fNMaxTriggers);
193      return kFALSE;
194    }
195  
196    // add trigger names
197 <  for (UInt_t i=0; i<fHLTTab->Entries(); ++i) {
198 <    TriggerName *tname = new TriggerName(*fHLTTab->At(i),i);
197 >  for (UInt_t i=0; i<fHLTTab->size(); ++i) {
198 >    TriggerName *tname = new TriggerName(fHLTTab->at(i),i);
199      fTriggers->Add(tname);
200    }
201  
202    // add module labels
203 <  for (UInt_t i=0; i<fHLTLab->Entries(); ++i) {
204 <    TriggerName *tname = new TriggerName(*fHLTLab->At(i),i);
205 <    fLabels->Add(tname);
203 >  UInt_t counter = 0;
204 >  UInt_t bitnum  = 0;
205 >  UInt_t which   = 0;
206 >  while (counter<fHLTLab->size()) {
207 >    TString tmpn(fHLTLab->at(counter));
208 >    ++counter;
209 >    if (tmpn.CompareTo("xxx-L1AlgoNames-xxx",TString::kIgnoreCase)==0) {
210 >      bitnum = 0;
211 >      which  = 1;
212 >      continue;
213 >    } else if (tmpn.CompareTo("xxx-L1TechNames-xxx",TString::kIgnoreCase)==0) {
214 >      bitnum = 0;
215 >      which  = 2;
216 >      continue;
217 >    }
218 >    TriggerName *tname = new TriggerName(tmpn,bitnum);
219 >    if (which==0)
220 >      fLabels->Add(tname);
221 >    else if (which==1)
222 >      fL1Algos->Add(tname);
223 >    else
224 >      fL1Techs->Add(tname);
225 >    ++bitnum;
226    }
227  
228    return kTRUE;
# Line 187 | Line 244 | void HLTFwkMod::Process()
244  
245    fTrigObjs->Delete();
246  
247 <  LoadBranch(fObjsName.Data());
248 <  LoadBranch(fRelsName.Data());
247 >  LoadBranch(fObjsName);
248 >  LoadBranch(fRelsName);
249  
250 <  for (UInt_t i=0; i<fRels->Entries(); ++i) {
250 >  const UInt_t n = fRels->GetEntries();
251 >  for (UInt_t i=0; i<n; ++i) {
252      const TriggerObjectRel *rel = fRels->At(i);
253 <    if(!rel) continue;
253 >    if (!rel) continue;
254  
255      const TriggerObjectBase *ob = fObjs->At(rel->ObjInd());
256 <    if(!ob) continue;
256 >    if (!ob) continue;
257  
258      TriggerObject *obj = new TriggerObject(rel->TrgId(), rel->Type(), ob->Id(),
259                                             ob->Pt(), ob->Eta(), ob->Phi(), ob->Mass());
260  
261 <    obj->SetTrigName(fHLTTab->Ref(rel->TrgId()).c_str());
262 <    obj->SetModuleName(fHLTLab->Ref(rel->ModInd()).c_str());
263 <    obj->SetFilterName(fHLTLab->Ref(rel->FilterInd()).c_str());
261 >    obj->SetTrigName(fHLTTab->at(rel->TrgId()).c_str());
262 >    obj->SetModuleName(fHLTLab->at(rel->ModInd()).c_str());
263 >    obj->SetFilterName(fHLTLab->at(rel->FilterInd()).c_str());
264 >    if (obj->TagInd()>=0)
265 >      obj->SetTagName(fHLTLab->at(obj->TagInd()).c_str());
266 >    else
267 >      obj->SetTagName("Unknown");
268 >
269      fTrigObjs->Add(obj);
270    }
271   }
# Line 212 | Line 275 | void HLTFwkMod::SlaveBegin()
275   {
276    // Request branches for trigger objects and relation, and publish our tables.
277  
278 <  ReqBranch(fObjsName.Data(), fObjs);
279 <  ReqBranch(fRelsName.Data(), fRels);
278 >  if (fObjsName != Names::gkHltObjBrn)
279 >    fRelsName = Form("%sRelation",fObjsName.Data());
280 >
281 >  ReqBranch(fObjsName, fObjs);
282 >  ReqBranch(fRelsName, fRels);
283  
284    if (!PublishObj(fTriggers)) {
285      SendError(kAbortAnalysis, "SlaveBegin",
# Line 230 | Line 296 | void HLTFwkMod::SlaveBegin()
296                "Could not publish HLT labels with name %s.", fLabels->GetName());
297      return;
298    }
299 +  if (!PublishObj(fL1Algos)) {
300 +    SendError(kAbortAnalysis, "SlaveBegin",
301 +              "Could not publish L1 algo table with name %s.", fL1Algos->GetName());
302 +    return;
303 +  }
304 +  if (!PublishObj(fL1Techs)) {
305 +    SendError(kAbortAnalysis, "SlaveBegin",
306 +              "Could not publish L1 tech table with name %s.", fL1Techs->GetName());
307 +    return;
308 +  }
309   }
310  
311   //--------------------------------------------------------------------------------------------------
# Line 240 | Line 316 | void HLTFwkMod::SlaveTerminate()
316    RetractObj(fTriggers->GetName());
317    RetractObj(fLabels->GetName());
318    RetractObj(fTrigObjs->GetName());
319 +  RetractObj(fL1Algos->GetName());
320 +  RetractObj(fL1Techs->GetName());
321   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines