ROOT logo
// $Id$
/**
 * @file rec-hlt-offline-vertexer.C
 * @brief Example macro to run the AliHLTGlobalOfflineVertexerComponent in
 * AliReconstruction.
 *
 * The macro supports two running modes for tests of the
 * 'GlobalOfflineVertexer' HLT component:
 * 1) subscribes to the output of the default HLT reconstruction chain,
 * extracts the ESD from the input, and runs the AliVertexerTracks.
 * 2) run on already reconstructed ESD, either "esdTree" or "HLTesdTree"
 *
 * <pre>
 * 1) Usage: aliroot -b -q -l \
 *     rec-hlt-offline-vertexer.C'("file", "cdb", minEvent, maxEvent)'
 * 2) Usage: aliroot -b -q -l \
 *     rec-hlt-offline-vertexer.C'("esdfile", "tree", "cdb", nofEvents)'
 *
 * Examples:
 *     rec-hlt-offline-vertexer.C'("alien:///alice/data/2009/.../....root")' 
 *     rec-hlt-offline-vertexer.C'("raw.root", "local://$ALICE_ROOT/OCDB", minEvent, MaxEvent)'
 *     rec-hlt-offline-vertexer.C'("raw.root", "esdTree", "local://$ALICE_ROOT/OCDB")'
 *
 * Defaults
 *     cdb="raw://"  -> take OCDB from GRID
 *     minEvent=-1   -> no lower event selection
 *     maxEvent=-1   -> no upper event selection
 *     nofEvents=-1  -> all events
 *
 * </pre>
 *
 * The input file can be a file on the grid, indicated by the tag
 * 'alien://'. By default also the OCDB is set to the GRID.
 * If either the file or the OCDB is taken from the GRID, the macro
 * connects to the Grid in the beginning.
 *
 * It is always a good idea to use the OCDB from the
 * Grid as this will contain all the necessary objects and the latest
 * calibration. The special URI 'raw://' is most advisable as it selects
 * the storage automatically from the run number. Other options are e.g.
 * - "alien://folder=/alice/data/2010/OCDB"
 * - "local://$ALICE_ROOT/OCDB"
 *
 * Note: You need a valid GRID token, if you want to access files directly
 * from the Grid, use 'alien-token-init' of your alien installation.
 *
 * @author Matthias.Richter@ift.uib.no
 * @ingroup alihlt_global
 */
void rec_hlt_offline_vertexer(const char *filename,
			      const char *cdbURI,
			      int minEvent=-1,
			      int maxEvent=-1)
{
  // connect to the GRID if we use a file or OCDB from the GRID
  TString struri=cdbURI;
  TString strfile=filename;
  if (struri.BeginsWith("raw://") ||
      strfile.Contains("://") && !strfile.Contains("local://")) {
    TGrid::Connect("alien");
  }

  // Set the CDB storage location
  AliCDBManager * man = AliCDBManager::Instance();
  man->SetDefaultStorage(cdbURI);
  if (struri.BeginsWith("local://")) {
    // set specific storage for GRP entry
    // search in the working directory and one level above, the latter
    // follows the standard simulation setup like e.g. in test/ppbench
    if (!gSystem->AccessPathName("GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD");
    } else if (!gSystem->AccessPathName("../GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD/..");      
    }
  }

  //////////////////////////////////////////////////////////////////////////////////////
  //
  // Reconstruction settings
  AliReconstruction rec;

  if (minEvent>=0 || maxEvent>minEvent) {
    if (minEvent<0) minEvent=0;
    if (maxEvent<minEvent) maxEvent=minEvent;
    rec.SetEventRange(minEvent,maxEvent);
  }
  rec.SetRunReconstruction("HLT ITS TPC");
  rec.SetWriteESDfriend(kFALSE);
  rec.SetInput(filename);

  // QA options
  rec.SetRunQA(":") ;
  //rec.SetQARefDefaultStorage("local://$ALICE_ROOT/QAref") ;

  //////////////////////////////////////////////////////////////////////////////////////
  //
  // setup the HLT system
  AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();

  // define a configuration for the GlobalOfflineVertexer component
  // a histgram component (GlobalVertexerHisto) creates histograms from
  // the output of the vertexer component. Histograms are saved in file
  // offlvertex.root
  //
  // The same chain is set up for the GlobalVertexer component, output
  // saved in glblvertex.root.
  //
  // arguments of a configuration:
  //  1) id of the configuartion, later used to refer to this configuration
  //  2) id of the component to run
  //  3) parents, here the configuration 'GLOBAL-esd-converter' of the libAliHLTGlobal
  //  4) optional component arguments
  AliHLTConfiguration offlvertexer("Offline-Vertexer", "GlobalOfflineVertexer", "GLOBAL-esd-converter", "");
  AliHLTConfiguration offlhistogram("Offline-Histogram", "GlobalVertexerHisto", "Offline-Vertexer", "");
  AliHLTConfiguration offlwriter("Offline-Writer", "ROOTFileWriter", "Offline-Histogram", "-datafile offlvertex.root -overwrite -concatenate-events");

  AliHLTConfiguration glblvertexer("Global-Vertexer", "GlobalVertexer", "GLOBAL-esd-converter", "");
  AliHLTConfiguration glblhistogram("Global-Histogram", "GlobalVertexerHisto", "Global-Vertexer", "");
  AliHLTConfiguration glblwriter("Global-Writer", "ROOTFileWriter", "Global-Histogram", "-datafile glblvertex.root -overwrite -concatenate-events");

  // set option for the HLT module in AliReconstruction
  // arguments
  //  - ignore-hltout : ignore the HLTOUT payload from the HLT DDLs
  //  - libraries to be used as plugins
  //  - loglevel=0x79 : Important, Warning, Error, Fatal
  //  - chains=Offline-Vertexer : chains to be run
  rec.SetOption("HLT",
		"ignore-hltout " 
		"libAliHLTUtil.so libAliHLTTPC.so "
		"libAliHLTITS.so libAliHLTGlobal.so "
		"loglevel=0x79 "
		"chains=Offline-Writer,Global-Writer "
		);

  rec.SetRunPlaneEff(kFALSE);

  // switch off cleanESD
  rec.SetCleanESD(kFALSE);

  AliLog::Flush();
  rec.Run();

}

// run default chain and connect vertexer components to global ESD
// using the raw OCDB
void rec_hlt_offline_vertexer(const char *filename,
		       int minEvent=-1,
		       int maxEvent=-1)
{
  rec_hlt_offline_vertexer(filename, "raw://", minEvent, maxEvent);
}

// run on ESD
void rec_hlt_offline_vertexer(const char *esdfilename,
			      const char *treename,
			      const char *cdbURI,
			      int nofEvents=-1)
{
  // check the name of the tree
  TString strtree=treename;
  if (strtree.CompareTo("esdTree")==0) strtree="ESD";
  else if (strtree.CompareTo("HLTesdTree")==0) strtree="HLTESD";
  else {
    cerr << "invalid treename '" << treename << "', supported 'esdTree' and 'HLTesdTree'" << endl;
    return;
  }

  // connect to the GRID if we use a file or OCDB from the GRID
  TString struri=cdbURI;
  TString strfile=esdfilename;
  if (struri.BeginsWith("raw://") ||
      strfile.Contains("://") && !strfile.Contains("local://")) {
    TGrid::Connect("alien");
  }

  // open the ESD file and get the event count
  if (!strfile.EndsWith("/")) strfile+="/";
  strfile+="AliESDs.root";
  TFile* esdfile=TFile::Open(strfile);
  if (!esdfile || esdfile->IsZombie()) {
    cerr << "can not open file " << strfile << endl;
    return;
  }

  // get number of events
  TTree* pTree=NULL;
  esdfile->GetObject(treename, pTree);
  if (!pTree) {
    cerr << "can not find " << treename << " in file " << strfile << endl;
    return;
  }
  if (pTree->GetEntries()<=0) {
    cerr << "empty tree " << treename << " in file " << strfile << endl;
    return;
  }
  
  AliESDEvent* esd=new AliESDEvent;
  esd->ReadFromTree(pTree);
  pTree->GetEntry(0);

  if (nofEvents<0 || nofEvents>pTree->GetEntries())
    nofEvents=pTree->GetEntries();

  // Set the CDB storage location
  AliCDBManager * man = AliCDBManager::Instance();
  man->SetDefaultStorage(cdbURI);
  man->SetRun(esd->GetRunNumber());
  if (struri.BeginsWith("local://")) {
    // set specific storage for GRP entry
    // search in the working directory and one level above, the latter
    // follows the standard simulation setup like e.g. in test/ppbench
    if (!gSystem->AccessPathName("GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD");
    } else if (!gSystem->AccessPathName("../GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD/..");      
    }
  }

  //////////////////////////////////////////////////////////////////////////////////////
  //
  // setup the HLT system
  AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();

  TString arguments, vertexerinput;

  // ESD publisher component
  arguments=" -datapath "; arguments+=esdfilename;
  arguments+=" -entrytype "; arguments+=strtree;
  vertexerinput="ESD-publisher";
  AliHLTConfiguration esdpublisher(vertexerinput.Data(), "ESDMCEventPublisher", "", arguments.Data());

  AliHLTConfiguration offlvertexer("Offline-Vertexer", "GlobalOfflineVertexer", vertexerinput.Data(), "");
  AliHLTConfiguration offlhistogram("Offline-Histogram", "GlobalVertexerHisto", "Offline-Vertexer", "");
  AliHLTConfiguration offlwriter("Offline-Writer", "ROOTFileWriter", "Offline-Histogram", "-datafile offlvertex.root -overwrite -concatenate-events");

  AliHLTConfiguration glblvertexer("Global-Vertexer", "GlobalVertexer", vertexerinput.Data(), "");
  AliHLTConfiguration glblhistogram("Global-Histogram", "GlobalVertexerHisto", "Global-Vertexer", "");
  AliHLTConfiguration glblwriter("Global-Writer", "ROOTFileWriter", "Global-Histogram", "-datafile glblvertex.root -overwrite -concatenate-events");

  // set option for the HLT system
  // arguments
  //  - libraries to be used as plugins
  //  - loglevel=0x79 : Important, Warning, Error, Fatal
  pHLT->ScanOptions("libAliHLTUtil.so libAliHLTGlobal.so "
		    "loglevel=0x79 "
		    );

  pHLT->BuildTaskList("Offline-Writer");
  pHLT->BuildTaskList("Global-Writer");
  pHLT->Run(nofEvents);
}

// help
void rec_hlt_offline_vertexer()
{
  cout << "rec_hlt_offline_vertexer.C: The macro supports two running modes of the " << endl; 
  cout << "                            'GlobalOfflineVertexer' HLT component" << endl;
  cout << " Run in AliReconstruction" << endl;
  cout << "   Usage: aliroot -b -q -l \\" << endl;
  cout << "     rec-hlt-offline-vertexer.C'(\"file\", \"cdb\", minEvent, maxEvent)'" << endl;
  cout << "" << endl;
  cout << " Run on already reconstructed ESD, either \"esdTree\" or \"HLTesdTree\"" << endl;
  cout << "   Usage: aliroot -b -q -l \\" << endl;
  cout << "     rec-hlt-offline-vertexer.C'(\"esdfile\", \"tree\", \"cdb\", nofEvents)'" << endl;
  cout << "     three first arguments mandatory" << endl;
  cout << "" << endl;
  cout << " Examples:" << endl;
  cout << "     rec-hlt-offline-vertexer.C'(\"alien:///alice/data/2009/.../....root\")' " << endl;
  cout << "     rec-hlt-offline-vertexer.C'(\"raw.root\", \"local://$ALICE_ROOT/OCDB\", minEvent, MaxEvent)'" << endl;
  cout << "     rec-hlt-offline-vertexer.C'(\"raw.root\", \"esdTree\", \"local://$ALICE_ROOT/OCDB\")'" << endl;
  cout << "" << endl;
  cout << " Defaults" << endl;
  cout << "     cdb=\"raw://\"  -> take OCDB from GRID" << endl;
  cout << "     minEvent=-1   -> no lower event selection" << endl;
  cout << "     maxEvent=-1   -> no upper event selection" << endl;
  cout << "     nofEvents=-1  -> all events" << endl;
}
 rec-hlt-offline-vertexer.C:1
 rec-hlt-offline-vertexer.C:2
 rec-hlt-offline-vertexer.C:3
 rec-hlt-offline-vertexer.C:4
 rec-hlt-offline-vertexer.C:5
 rec-hlt-offline-vertexer.C:6
 rec-hlt-offline-vertexer.C:7
 rec-hlt-offline-vertexer.C:8
 rec-hlt-offline-vertexer.C:9
 rec-hlt-offline-vertexer.C:10
 rec-hlt-offline-vertexer.C:11
 rec-hlt-offline-vertexer.C:12
 rec-hlt-offline-vertexer.C:13
 rec-hlt-offline-vertexer.C:14
 rec-hlt-offline-vertexer.C:15
 rec-hlt-offline-vertexer.C:16
 rec-hlt-offline-vertexer.C:17
 rec-hlt-offline-vertexer.C:18
 rec-hlt-offline-vertexer.C:19
 rec-hlt-offline-vertexer.C:20
 rec-hlt-offline-vertexer.C:21
 rec-hlt-offline-vertexer.C:22
 rec-hlt-offline-vertexer.C:23
 rec-hlt-offline-vertexer.C:24
 rec-hlt-offline-vertexer.C:25
 rec-hlt-offline-vertexer.C:26
 rec-hlt-offline-vertexer.C:27
 rec-hlt-offline-vertexer.C:28
 rec-hlt-offline-vertexer.C:29
 rec-hlt-offline-vertexer.C:30
 rec-hlt-offline-vertexer.C:31
 rec-hlt-offline-vertexer.C:32
 rec-hlt-offline-vertexer.C:33
 rec-hlt-offline-vertexer.C:34
 rec-hlt-offline-vertexer.C:35
 rec-hlt-offline-vertexer.C:36
 rec-hlt-offline-vertexer.C:37
 rec-hlt-offline-vertexer.C:38
 rec-hlt-offline-vertexer.C:39
 rec-hlt-offline-vertexer.C:40
 rec-hlt-offline-vertexer.C:41
 rec-hlt-offline-vertexer.C:42
 rec-hlt-offline-vertexer.C:43
 rec-hlt-offline-vertexer.C:44
 rec-hlt-offline-vertexer.C:45
 rec-hlt-offline-vertexer.C:46
 rec-hlt-offline-vertexer.C:47
 rec-hlt-offline-vertexer.C:48
 rec-hlt-offline-vertexer.C:49
 rec-hlt-offline-vertexer.C:50
 rec-hlt-offline-vertexer.C:51
 rec-hlt-offline-vertexer.C:52
 rec-hlt-offline-vertexer.C:53
 rec-hlt-offline-vertexer.C:54
 rec-hlt-offline-vertexer.C:55
 rec-hlt-offline-vertexer.C:56
 rec-hlt-offline-vertexer.C:57
 rec-hlt-offline-vertexer.C:58
 rec-hlt-offline-vertexer.C:59
 rec-hlt-offline-vertexer.C:60
 rec-hlt-offline-vertexer.C:61
 rec-hlt-offline-vertexer.C:62
 rec-hlt-offline-vertexer.C:63
 rec-hlt-offline-vertexer.C:64
 rec-hlt-offline-vertexer.C:65
 rec-hlt-offline-vertexer.C:66
 rec-hlt-offline-vertexer.C:67
 rec-hlt-offline-vertexer.C:68
 rec-hlt-offline-vertexer.C:69
 rec-hlt-offline-vertexer.C:70
 rec-hlt-offline-vertexer.C:71
 rec-hlt-offline-vertexer.C:72
 rec-hlt-offline-vertexer.C:73
 rec-hlt-offline-vertexer.C:74
 rec-hlt-offline-vertexer.C:75
 rec-hlt-offline-vertexer.C:76
 rec-hlt-offline-vertexer.C:77
 rec-hlt-offline-vertexer.C:78
 rec-hlt-offline-vertexer.C:79
 rec-hlt-offline-vertexer.C:80
 rec-hlt-offline-vertexer.C:81
 rec-hlt-offline-vertexer.C:82
 rec-hlt-offline-vertexer.C:83
 rec-hlt-offline-vertexer.C:84
 rec-hlt-offline-vertexer.C:85
 rec-hlt-offline-vertexer.C:86
 rec-hlt-offline-vertexer.C:87
 rec-hlt-offline-vertexer.C:88
 rec-hlt-offline-vertexer.C:89
 rec-hlt-offline-vertexer.C:90
 rec-hlt-offline-vertexer.C:91
 rec-hlt-offline-vertexer.C:92
 rec-hlt-offline-vertexer.C:93
 rec-hlt-offline-vertexer.C:94
 rec-hlt-offline-vertexer.C:95
 rec-hlt-offline-vertexer.C:96
 rec-hlt-offline-vertexer.C:97
 rec-hlt-offline-vertexer.C:98
 rec-hlt-offline-vertexer.C:99
 rec-hlt-offline-vertexer.C:100
 rec-hlt-offline-vertexer.C:101
 rec-hlt-offline-vertexer.C:102
 rec-hlt-offline-vertexer.C:103
 rec-hlt-offline-vertexer.C:104
 rec-hlt-offline-vertexer.C:105
 rec-hlt-offline-vertexer.C:106
 rec-hlt-offline-vertexer.C:107
 rec-hlt-offline-vertexer.C:108
 rec-hlt-offline-vertexer.C:109
 rec-hlt-offline-vertexer.C:110
 rec-hlt-offline-vertexer.C:111
 rec-hlt-offline-vertexer.C:112
 rec-hlt-offline-vertexer.C:113
 rec-hlt-offline-vertexer.C:114
 rec-hlt-offline-vertexer.C:115
 rec-hlt-offline-vertexer.C:116
 rec-hlt-offline-vertexer.C:117
 rec-hlt-offline-vertexer.C:118
 rec-hlt-offline-vertexer.C:119
 rec-hlt-offline-vertexer.C:120
 rec-hlt-offline-vertexer.C:121
 rec-hlt-offline-vertexer.C:122
 rec-hlt-offline-vertexer.C:123
 rec-hlt-offline-vertexer.C:124
 rec-hlt-offline-vertexer.C:125
 rec-hlt-offline-vertexer.C:126
 rec-hlt-offline-vertexer.C:127
 rec-hlt-offline-vertexer.C:128
 rec-hlt-offline-vertexer.C:129
 rec-hlt-offline-vertexer.C:130
 rec-hlt-offline-vertexer.C:131
 rec-hlt-offline-vertexer.C:132
 rec-hlt-offline-vertexer.C:133
 rec-hlt-offline-vertexer.C:134
 rec-hlt-offline-vertexer.C:135
 rec-hlt-offline-vertexer.C:136
 rec-hlt-offline-vertexer.C:137
 rec-hlt-offline-vertexer.C:138
 rec-hlt-offline-vertexer.C:139
 rec-hlt-offline-vertexer.C:140
 rec-hlt-offline-vertexer.C:141
 rec-hlt-offline-vertexer.C:142
 rec-hlt-offline-vertexer.C:143
 rec-hlt-offline-vertexer.C:144
 rec-hlt-offline-vertexer.C:145
 rec-hlt-offline-vertexer.C:146
 rec-hlt-offline-vertexer.C:147
 rec-hlt-offline-vertexer.C:148
 rec-hlt-offline-vertexer.C:149
 rec-hlt-offline-vertexer.C:150
 rec-hlt-offline-vertexer.C:151
 rec-hlt-offline-vertexer.C:152
 rec-hlt-offline-vertexer.C:153
 rec-hlt-offline-vertexer.C:154
 rec-hlt-offline-vertexer.C:155
 rec-hlt-offline-vertexer.C:156
 rec-hlt-offline-vertexer.C:157
 rec-hlt-offline-vertexer.C:158
 rec-hlt-offline-vertexer.C:159
 rec-hlt-offline-vertexer.C:160
 rec-hlt-offline-vertexer.C:161
 rec-hlt-offline-vertexer.C:162
 rec-hlt-offline-vertexer.C:163
 rec-hlt-offline-vertexer.C:164
 rec-hlt-offline-vertexer.C:165
 rec-hlt-offline-vertexer.C:166
 rec-hlt-offline-vertexer.C:167
 rec-hlt-offline-vertexer.C:168
 rec-hlt-offline-vertexer.C:169
 rec-hlt-offline-vertexer.C:170
 rec-hlt-offline-vertexer.C:171
 rec-hlt-offline-vertexer.C:172
 rec-hlt-offline-vertexer.C:173
 rec-hlt-offline-vertexer.C:174
 rec-hlt-offline-vertexer.C:175
 rec-hlt-offline-vertexer.C:176
 rec-hlt-offline-vertexer.C:177
 rec-hlt-offline-vertexer.C:178
 rec-hlt-offline-vertexer.C:179
 rec-hlt-offline-vertexer.C:180
 rec-hlt-offline-vertexer.C:181
 rec-hlt-offline-vertexer.C:182
 rec-hlt-offline-vertexer.C:183
 rec-hlt-offline-vertexer.C:184
 rec-hlt-offline-vertexer.C:185
 rec-hlt-offline-vertexer.C:186
 rec-hlt-offline-vertexer.C:187
 rec-hlt-offline-vertexer.C:188
 rec-hlt-offline-vertexer.C:189
 rec-hlt-offline-vertexer.C:190
 rec-hlt-offline-vertexer.C:191
 rec-hlt-offline-vertexer.C:192
 rec-hlt-offline-vertexer.C:193
 rec-hlt-offline-vertexer.C:194
 rec-hlt-offline-vertexer.C:195
 rec-hlt-offline-vertexer.C:196
 rec-hlt-offline-vertexer.C:197
 rec-hlt-offline-vertexer.C:198
 rec-hlt-offline-vertexer.C:199
 rec-hlt-offline-vertexer.C:200
 rec-hlt-offline-vertexer.C:201
 rec-hlt-offline-vertexer.C:202
 rec-hlt-offline-vertexer.C:203
 rec-hlt-offline-vertexer.C:204
 rec-hlt-offline-vertexer.C:205
 rec-hlt-offline-vertexer.C:206
 rec-hlt-offline-vertexer.C:207
 rec-hlt-offline-vertexer.C:208
 rec-hlt-offline-vertexer.C:209
 rec-hlt-offline-vertexer.C:210
 rec-hlt-offline-vertexer.C:211
 rec-hlt-offline-vertexer.C:212
 rec-hlt-offline-vertexer.C:213
 rec-hlt-offline-vertexer.C:214
 rec-hlt-offline-vertexer.C:215
 rec-hlt-offline-vertexer.C:216
 rec-hlt-offline-vertexer.C:217
 rec-hlt-offline-vertexer.C:218
 rec-hlt-offline-vertexer.C:219
 rec-hlt-offline-vertexer.C:220
 rec-hlt-offline-vertexer.C:221
 rec-hlt-offline-vertexer.C:222
 rec-hlt-offline-vertexer.C:223
 rec-hlt-offline-vertexer.C:224
 rec-hlt-offline-vertexer.C:225
 rec-hlt-offline-vertexer.C:226
 rec-hlt-offline-vertexer.C:227
 rec-hlt-offline-vertexer.C:228
 rec-hlt-offline-vertexer.C:229
 rec-hlt-offline-vertexer.C:230
 rec-hlt-offline-vertexer.C:231
 rec-hlt-offline-vertexer.C:232
 rec-hlt-offline-vertexer.C:233
 rec-hlt-offline-vertexer.C:234
 rec-hlt-offline-vertexer.C:235
 rec-hlt-offline-vertexer.C:236
 rec-hlt-offline-vertexer.C:237
 rec-hlt-offline-vertexer.C:238
 rec-hlt-offline-vertexer.C:239
 rec-hlt-offline-vertexer.C:240
 rec-hlt-offline-vertexer.C:241
 rec-hlt-offline-vertexer.C:242
 rec-hlt-offline-vertexer.C:243
 rec-hlt-offline-vertexer.C:244
 rec-hlt-offline-vertexer.C:245
 rec-hlt-offline-vertexer.C:246
 rec-hlt-offline-vertexer.C:247
 rec-hlt-offline-vertexer.C:248
 rec-hlt-offline-vertexer.C:249
 rec-hlt-offline-vertexer.C:250
 rec-hlt-offline-vertexer.C:251
 rec-hlt-offline-vertexer.C:252
 rec-hlt-offline-vertexer.C:253
 rec-hlt-offline-vertexer.C:254
 rec-hlt-offline-vertexer.C:255
 rec-hlt-offline-vertexer.C:256
 rec-hlt-offline-vertexer.C:257
 rec-hlt-offline-vertexer.C:258
 rec-hlt-offline-vertexer.C:259
 rec-hlt-offline-vertexer.C:260
 rec-hlt-offline-vertexer.C:261
 rec-hlt-offline-vertexer.C:262
 rec-hlt-offline-vertexer.C:263
 rec-hlt-offline-vertexer.C:264
 rec-hlt-offline-vertexer.C:265
 rec-hlt-offline-vertexer.C:266
 rec-hlt-offline-vertexer.C:267
 rec-hlt-offline-vertexer.C:268
 rec-hlt-offline-vertexer.C:269
 rec-hlt-offline-vertexer.C:270
 rec-hlt-offline-vertexer.C:271
 rec-hlt-offline-vertexer.C:272
 rec-hlt-offline-vertexer.C:273
 rec-hlt-offline-vertexer.C:274
 rec-hlt-offline-vertexer.C:275
 rec-hlt-offline-vertexer.C:276
 rec-hlt-offline-vertexer.C:277
 rec-hlt-offline-vertexer.C:278
 rec-hlt-offline-vertexer.C:279