StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
doEvents.C
1 // $Id: doEvents.C,v 1.111 2021/03/20 02:38:13 genevb Exp $
3 // Description:
4 // Chain to read events from files or database into StEvent and analyze.
5 // what it does: reads .dst.root or .xdf files and then runs StEventMaker
6 // to fill StEvent and StAnalysisMaker to show example of analysis
7 // Environment:
8 // Software developed for the STAR Detector at Brookhaven National Laboratory
9 // Ways to run:
10 // If you specify a path, all DST files below that path will be
11 // found, and the first 'nEvents' events in the file set will be
12 // analyzed.
13 // The type of DST files searched for is taken from the 'file' parameter.
14 // If 'file ends in '.dst.root', ROOT DSTs are searched for.
15 // If 'file ends in '.xdf', XDF DSTs are searched for.
16 // If path begins with '-', 'file' will be taken to be a single file
17 // to be processed.
18 // example invocation:
19 // .x doEvents.C(10,"some_directory/some_dst_file.xdf")
20 // example ROOT file invocation:
21 // .x doEvents.C(10,"some_directory/some_dst_file.root")
22 // example multi-ROOT file invocation:
23 // .x doEvents.C(9999,"some_directory/*.dst.root")
24 //
25 // example using the Grid Collector
26 // 0) The third argument, qaflag, must contain "gc" in order to access Grid
27 // Collector functions
28 // 1) process first ten events generated, request is embedded in this file
29 // .x doEvents.C(10, "", "gc")
30 // 2) specify the request as a string argument (analyze the event branch of
31 // selected data from production P02gg). First argument 0 (or smaller)
32 // indicates that all events satisfying the condition will be analyzed.
33 // .x doEvents.C(0, "select event where Production=P02gg and NV0>2000", "gc")
34 //
35 // The rules for constructing valid conditions are as follows
36 // a) simple conditions can be joined together with logical operator "AND",
37 // "OR", "XOR" and "!" (for NOT).
38 // b) a simple condition is a range such as 'v1 < name' and 'v1 <= name <
39 // v2'. The supported range operators are >, >=, <, <=, == and !=.
40 // The name is the name of a leaf of the ROOT tree in tags.root files.
41 // In case a leaf contains many values, the name to be used are of the
42 // form leaf_name[0], leaf_name[1], and so on.
43 // c) only '==' operator is supported for string attributes. To ensure
44 // a string literal is definitely treated as a string literal, not a
45 // name, it should be quoted either with "" or with ''.
47 // Author List: Torre Wenaus, BNL 2/99
48 // Victor Perevoztchikov
49 //
50 // inputs:
51 // nEvents = # events to process
52 // path = a. directory you want files from
53 // b. "-" to get just the one file you want
54 // file = a. file names in directory (takes all files)
55 // b. the 1 particular full file name (with directory) you want
56 // qaflag = "evout" turn on writing of output test.event.root
57 // qaflag = "display" turn on EventDisplay,
58 // set to off by default.
59 // qaflag = "gc" treat the file argument as a select statement
60 // for Grid Collector.
61 //
63 #include "iostream.h"
64 
65 class StChain;
66 StChain *chain=0;
67 class St_db_Maker;
68 St_db_Maker *dbMk =0;
69 class StFileI;
70 StFileI *setFiles =0;
71 TString mainBranch;
72 
73 Int_t iEvt=0,istat=0;
74 //____________________________________________________________________________
75 void doEvents()
76 {
77  cout << "Usage: doEvents.C(2) // work with default event.root file" << endl;
78  cout << " doEvents.C(startEvent, nEvents,\"path/somefile.event.root\")" << endl;
79  cout << " doEvents.C(nEvents, \"path/*.event.root\")" << endl;
80  cout << " doEvents.C(nEvents, \"path/file.dst.root\", \"evout\") //Write out StEvent" << endl;
81  cout << " doEvents.C(nEvents, \"path/file.dst.root\", \"display\") //EventDispay" << endl;
82  cout << " doEvents.C(nEvents, \"path/file.dst.root\", \"dbon\") //DB on" << endl;
83  cout << " doEvents.C(nEvents, \"@file.lis\") //list of files in file.lis " << endl;
84  cout << " doEvents.C(nEvents, \"SELECT MuDST WHERE production=P04ih and zdc1Energy>50\", \"gc\") //GridCollector selects MuDST.root files " << endl;
85  cout << " doEvents.C(nEvents, \"SELECT event WHERE production=P04ih and zdc1Energy>50\", \"gc\") //GridCollector selects event.root files" << endl;
86  cout << " doEvents.C(nEvents, \"@GridCollector_commands.txt\", \"gc,evout\") //GridCollector commands in file" << endl;
87 }
88 
89 
90 //______________________________________________________________________________
91 // ProtoTypes
92 void doEvents(Int_t nEvents, const char ** fileList, const char *qaflag =0);
93 void doEvents(Int_t startEvent, Int_t nEvents, const char ** fileList, const char *qaflag =0);
94 
95 void doEvents(Int_t nEvents,
96  const char *file="/afs/rhic.bnl.gov/star/data/samples/example.event.root",
97  const char *qaflag = 0);
98 
99 void doEvents(Int_t startEvent,Int_t nEvents,
100  const char *file="/afs/rhic.bnl.gov/star/data/samples/example.event.root",
101  const char *qaflag = 0);
102 
103 void doEvents(Int_t nEvents,
104  const char *path,
105  const char *file,
106  const char *qaflag, int flag);
107 
108 void loadLibs(const char *opt);
109 int gcInit (const char *request);
110 
111 
112 //______________________________________________________________________________
113 void doEvents(Int_t startEvent, Int_t nEventsQQ, const char **fileList, const char *qaflag)
114 {
115 
116  if (!qaflag) qaflag = "";
117  int nEvents = nEventsQQ;
118  int eventNumber2Display = 0;
119  TString tflag = qaflag; tflag.ToLower();
120  int eventDisplay = tflag.Contains("disp");
121  if (eventDisplay) {
122  if (gROOT->IsBatch() )
123  {
124  cout << endl << endl <<" ** Warning ** You have started the EventDisplay version in a batch mode" << endl;
125  return;
126  }
127  TObjArray *tokens = tflag.Tokenize(":");
128  if ( tokens->GetEntries() >= 2 ) {
129  // May be event id
130  TString eventid = (tokens->At(tokens->GetEntries()-1))->GetName();
131  if ( eventid.IsDigit() )
132  eventNumber2Display = eventid.Atoi();
133  }
134  delete tokens;
135  }
136  cout << endl << endl <<" doEvents - input # events = " << nEvents << endl;
137  Int_t ilist=0;
138  while(fileList[ilist]){
139  cout << " doEvents - input fileList = " << fileList[ilist] << endl;
140  ilist++;
141  }
142  cout << " doEvents - input qaflag = " << qaflag << endl;
143 
144  // First load some shared libraries we need
145  // Load all libs WMZ 7/27/04
146  loadLibs("");
147 
148 
149  // DB ON
150  if (tflag.Contains("dbon")) {
151  loadLibs("dbon");
152  }
153 
154  // Special libraries for EventDisplay
155  if (eventDisplay) {//EventDisplay on
156  loadLibs("disp");
157  }
158  // Four levels of debug (0, 1, 2, 3) for MuDst WMZ 7/27/04
160 
161  chain = new StChain("StChain");
162  setFiles =0;
163 
164  if (tflag.Contains("gc")) { // GridCollector
165  int nev = gcInit(fileList[0]);
166  if (nev<=0) return;
167  if (nEvents <= 0) nEvents = nev;
168  } else { // Normal case -- user has specified a list of files
169  setFiles = new StFile(fileList);
170  char line[999]; strcpy(line,fileList[0]);
171  if (*line=='@') {
172  TString command("grep '.root' "); command += line+1;
173  FILE *pipe = gSystem->OpenPipe(command.Data(),"r");
174  if (pipe) {fgets(line,999,pipe);line[strlen(line)-1] = 0;}
175  fclose(pipe);
176  }
177  mainBranch = line;
178  // printf("fileList[0] %s %s\n",line,mainBranch.Data());
179  mainBranch.ReplaceAll(".root","");
180  int idot = strrchr((char*)mainBranch,'.') - mainBranch.Data();
181  mainBranch.Replace(0,idot+1,"");
182  mainBranch += "Branch";
183  }
184 
185  // Geant maker for EventDisplay
186  if (eventDisplay) {
187  int NwGeant=5000000, IwType=0, NwPaw=0;
188  St_geant_Maker *geantMk = new St_geant_Maker("geant",NwGeant,NwPaw,IwType);
189  geantMk->LoadGeometry("detp geometry y2004");
190  geantMk->SetActive(kFALSE);
191  }
192 
193 
194  if (!mainBranch.IsNull()) {
195  printf("*** mainBranch=%s ***\n",mainBranch.Data());
196  }
197 
198 // For MuDst, the input string fTreeName which is defined in StIOInterface.h
199 // is used to pass a SAVE flag. To save selected events of MuDst, instance
200 // a new StIOMaker class as follows, // WMZ 7/27/04
201 // StIOMaker *IOMk = new StIOMaker("IO","r",setFiles,"MuSave");
202  StIOMaker *IOMk = new StIOMaker("IO","r",setFiles,"bfcTree");
203  IOMk->SetIOMode("r");
204  IOMk->SetBranch("*",0,"0"); //deactivate all branches
205  if(!mainBranch.IsNull()) IOMk->SetBranch(mainBranch,0,"r");
206  IOMk->SetBranch("evtselBranch",0,"r");
207  // IOMk->SetBranch("dstBranch",0,"r");
208  // IOMk->SetBranch("runcoBranch",0,"r");
209  IOMk->SetDebug(1);
210  //for test only IOMk->SetMaxEvent(2);
211 
212  // DB ON
213  if (tflag.Contains("dbon")) {
214  dbMk = new St_db_Maker("db","MySQL:StarDb","$STAR/StarDb","StarDb");
215  }
216 
217  // Maker to read events from file or database into StEvent
218  if (!mainBranch.Contains("mudstBranch") &&
219  mainBranch.Contains("dstBranch")) {
220  gSystem->Load("libStMagF");
221  gSystem->Load("StDetectorDbMaker");
222  gSystem->Load("StTpcDb");
223  gSystem->Load("StEventMaker");
224  new StMagFMaker;
225  StEventMaker *readerMaker = new StEventMaker("events","title");
226  }
227  // Sample analysis maker
228  StAnalysisMaker *analysisMaker = new StAnalysisMaker("analysis");
229 // Sample analysis maker for MuDst WMZ 7/27/04
230 // StMuAnalysisMaker *analysisMaker = new StMuAnalysisMaker("analysis");
231 
232 
234  // IT IS THE PLACE TO ADD USER MAKERS
235  // LIKE:
236  // gSystem->Load("StUserMaker");
237  // StUserMaker *UserMk = new StUserMaker("UserName");
238  // UserMk->SetSome(2002);
240 
241  // WriteOut StEvent
242  Int_t wrStEOut = tflag.Contains("evout");
243  if (wrStEOut) {
244  cout << "!!!! doEvents: will write out .event.root file !!" << endl << endl;
245  StIOMaker *outMk = new StIOMaker("EvOut","w","test.event.root","bfcTree");
246  // outMk->SetBranch("eventBranch","test.event.root","w");
247  outMk->IntoBranch("evtselBranch","StEvent");
248  IOMk->SetNotify("CloseFile",outMk);
249  IOMk->SetNotify("OpenFile" ,outMk);
250  }
251 
252 
253  // StEventDisplayMaker
254  if (eventDisplay) {
255 
256  StEventDisplayMaker *displayMk = new StEventDisplayMaker();
257  displayMk->SetEventIdToRender(eventNumber2Display);
258  if (eventNumber2Display)
259  printf("\n\n\n Display the Event %d only\n", eventNumber2Display);
260  // Set the default to display all StEvent tracks
261  displayMk->AddName("StEvent(Primary Tracks)");
262  // displayMk->AddName("StEvent(Kink Tracks)");
263  // displayMk->AddName("StEvent(V0 Tracks)");
264  // displayMk->AddName("StEvent(Xi Tracks)");
265  // displayMk->AddName("StEvent(All Tracks)");
266  // Set the default StEvent events filter
267  displayMk->AddFilter(new StFilterDef("MainFilter"));
268  displayMk->AddFilter(new StMuDstFilterHelper("MuL3Filter",kFALSE));
269  displayMk->AddFilter(new StColorFilterHelper("Color schema",kFALSE));
270 // Check whether any Custom filter is present
271  if (!gSystem->Load("StCustomFilter")) {
272  displayMk->AddFilter(new StCustomFilter("Custom filter",kFALSE));
273  }
274 
275  }
276 
277  // Initialize chain
278  cout << "----------------------------------------------------------" << endl;
279  cout << " doEvents - Initializing and Printing chain information " << endl;
280  Int_t iInit = chain->Init();
281  if (iInit) chain->Fatal(iInit,"on init");
282  chain->PrintInfo();
283  cout << "----------------------------------------------------------" << endl << endl;
284 
285 
286  // go to event startEvent
287  if (startEvent > 1) IOMk->Skip(startEvent-1);
288 
289  // Event loop
290  istat=0,iEvt=1;
291  istat = chain->EventLoop(1,nEvents);
292  //VP
293  // delete setFiles; setFiles=0;
294  // gSystem->Exit(0);
295 }
296 //____________________________________________________________________________
297 void doEvents(Int_t startEvent, Int_t nEvents, const char *file, const char *qaflag)
298 {
299  if (!qaflag) qaflag="";
300  printf("*file = %s\n",file);
301  const char *fileListQQ[]={0,0};
302  fileListQQ[0]=file;
303  cout << "Calling (startEvent,nEvents,fileListQQ,qaflag)" << endl;
304  doEvents(startEvent,nEvents,fileListQQ,qaflag);
305 }
306 //____________________________________________________________________________
307 void doEvents(Int_t nEvents, const char *file, const char *qaflag)
308 {
309  if (!qaflag) qaflag="";
310  cout << "Calling (1,nEvents,file,qaflag)" << endl;
311  doEvents(1,nEvents,file,qaflag);
312 }
313 
314 //____________________________________________________________________________
315 void doEvents(Int_t nEvents, const char *path,const char *file, const char *qaflag, int flag)
316 {
317  if (!qaflag) qaflag="";
318  TString F;
319  if (path && path[0] && path[0]!='-') F = path;
320  if (file && file[0] && file[0]!='-') {
321  if (!F.IsNull()) F +="/";
322  F += file;
323  }
324  TString opt = qaflag;
325  if (flag) opt += " evout";
326 
327  cout << "Calling (1,nEvents,F.Data(),opt.Data())" << endl;
328  doEvents(1,nEvents,F.Data(),opt.Data());
329 }
330 
331 //____________________________________________________________________________
332 void doEvents(Int_t nEvents, const char **fileList, const char *qaflag)
333 {
334  cout << "Calling (1,nEvents,fileList,qaflag)" << endl;
335  doEvents(1,nEvents,fileList,qaflag);
336 }
337 //____________________________________________________________________________
338 void loadLibs(const char *opt)
339 {
340 // Dynamically link needed shared libs
341 
342  if (!opt[0]) { //Default set
343 // ROOT libs
344  gSystem->Load("libPhysics");
345  gSystem->Load("libTable");
346  gSystem->Load("libGeom");
347 
348 // STAR libs
349  gSystem->Load("St_base");
350  gSystem->Load("StChain");
351  gSystem->Load("St_Tables");
352  gSystem->Load("StUtilities"); // new addition 22jul99
353  gSystem->Load("StTreeMaker");
354  gSystem->Load("StIOMaker");
355  gSystem->Load("StarClassLibrary");
356  gSystem->Load("StTriggerDataMaker"); // new starting from April 2003
357  gSystem->Load("StBichsel");
358  gSystem->Load("StEvent");
359  gSystem->Load("StTpcDb");
360  gSystem->Load("StEventUtilities");
361  gSystem->Load("StEmcUtil");
362  gSystem->Load("StTofUtil");
363  gSystem->Load("StPmdUtil");
364  gSystem->Load("StPreEclMaker");
365  gSystem->Load("StStrangeMuDstMaker");
366  gSystem->Load("StMuDSTMaker");
367  gSystem->Load("StarMagField");
368  gSystem->Load("StMagF");
369  gSystem->Load("StAnalysisMaker");
370  gSystem->Load("StMuAnalysisMaker");
371  cout << " loading of shared libraries done" << endl;
372  return;
373  }
374  if (strstr(opt,"dbon")) {// DB stuff
375  gSystem->Load("StDbLib.so");
376  gSystem->Load("StDbBroker.so");
377  gSystem->Load("libStDb_Tables.so");
378  gSystem->Load("St_db_Maker.so");
379  gSystem->Load("StTpcDb");
380  gSystem->Load("StDetectorDbMaker");
381  }
382 
383  if (strstr(opt,"disp")) {// EventDisplay stuff
384  gSystem->Load("St_g2t"); // is a part od St_Tables
385  gSystem->Load("geometry");
386  gSystem->Load("St_geant_Maker");
387  gSystem->Load("StTableUtilities");
388  gSystem->Load("StEventDisplayMaker");
389  }
390 }
391 //____________________________________________________________________________
392 // read GC command file as one single string,
393 // return number of bytes in the command string, cmds.
394 int gcReadCommands(const char *file, TString& cmds)
395 {
396  if (*file != 0) { // must have a valid file name
397  FILE *inp = 0;
398  inp = fopen(file, "r");
399  if (!inp) { // File not found
400  printf("doEvents: ERROR. File Not Found // %s\n",req+1);
401  return -1;
402  }
403 
404  char line[500], *comm, *fst;
405  while(fgets(line, 500, inp)) {
406  for (int i=0; line[i]; i++) // change new line to space
407  if (line[i]=='\t' || line[i]=='\n') line[i]=' ';
408  // strip away comments
409  fst = line + strspn(line," \t");
410  if (fst[0] == 0 ) continue; // blank line
411  if (fst[0] =='#') continue; // # comment
412  if (strncmp(fst,"//",2)==0 ) continue; // // comment
413  //comm = strstr(line,"#" ); if (comm) comm[0]=0; // # comment
414  comm = strstr(line," //"); if (comm) comm[0]=0; // // comment
415  cmds += fst;
416  }
417  fclose(inp);
418  }
419 
420  return 0;
421 }
422 //____________________________________________________________________________
423 // Initialize global variable setFiles for Grid Collector operations
424 // also initialize variable mainBranch
425 int gcInit(const char *request)
426 {
427  Int_t ierr = 0;
428  gSystem->Load("StGridCollector");
429  StGridCollector *req = StGridCollector::Create();
430  req->SetDebug(1);
431 
432  if (request == 0 || *request == 0) {
433  // This is an example to show how to initialize Grid Collector in
434  // another way.
435  const char *argv[] = {
436  "-v", "5",
437  "-c", "/afs/rhic.bnl.gov/star/incoming/GCA/gca.rc"
438  "-s", "MuDST",
439  "-w", "production=P04ih and zdc1Energy>50"
440  };
441  const Int_t argc = sizeof(argv)/4;
442  ierr = req->Init(argc, argv);
443  if (0 != ierr) {
444  std::cout << "doEvents.C can not initialize the Grid Collector "
445  << "with argument \"";
446  std::cout << *argv;
447  for (Int_t i = 1; i < argc; ++ i)
448  std::cout << " " << argv[i];
449  std::cout << "\"\nError code is " << ierr
450  << std::endl;
451  }
452  }
453  else if (*request == '@') { // read the command file
454  TString cmds;
455  ierr = gcReadCommands(request+1, cmds);
456  if (!ierr) ierr = req->Init(cmds.Data());
457  if (0 != ierr) {
458  std::cout << "doEvents.C can not initialize the Grid Collector "
459  << "with argument \"" << cmds.Data()
460  << "\"\nError code is " << ierr
461  << std::endl;
462  }
463  }
464  else { // use the input value directly
465  ierr = req->Init(request);
466  if (0 != ierr) {
467  std::cout << "doEvents.C can not initialize the Grid Collector "
468  << "with argument \"" << request
469  << "\"\nError code is " << ierr
470  << std::endl;
471  }
472  }
473 
474  if (0 != ierr) { // initialization failure, message printed already
475  ierr = 0;
476  }
477  else {
478  int nEvents = req->GetNEvents();
479  std::cout << "INFO: actual number of events " << nEvents << std::endl;
480  setFiles = req;
481  mainBranch = req->GetCompName();
482  mainBranch += "Branch";
483  ierr = nEvents;
484  }
485  return ierr;
486 }
487 //____________________________________________________________________________
489 // $Log: doEvents.C,v $
490 // Revision 1.111 2021/03/20 02:38:13 genevb
491 // Remove StTpcDb dependence for StEventUtilities
492 //
493 // Revision 1.110 2021/03/19 14:49:29 genevb
494 // Add StTpcDb dependency for StEvenntUtilities
495 //
496 // Revision 1.109 2010/03/16 16:23:09 fisyak
497 // StTpcDb requires StDetectorDbMaker
498 //
499 // Revision 1.108 2009/11/05 21:37:12 fisyak
500 // Add StMagF for StTpcDb
501 //
502 // Revision 1.107 2007/09/01 02:26:12 fine
503 // introduce Event selection to fix isseu #1051
504 //
505 // Revision 1.106 2007/08/28 14:30:55 fine
506 // Add StTpcDb to load StEventMaker
507 //
508 // Revision 1.105 2006/08/15 21:42:43 jeromel
509 // Fix rhic -> rhic.bnl.gov
510 //
511 // Revision 1.104 2005/08/31 15:03:09 fisyak
512 // Add dependence StMagF vs StarMagField
513 //
514 // Revision 1.103 2005/07/14 19:25:59 fine
515 // Change the default EventDisplay options
516 //
517 // Revision 1.102 2004/12/13 21:00:28 fine
518 // Add a protection against of batch mode for Event Display
519 //
520 // Revision 1.101 2004/11/08 17:20:59 fine
521 // fix the default geometry version from year2001 to y2004
522 //
523 // Revision 1.100 2004/08/27 02:23:48 fine
524 // comment out delete setFile to preserve setFile for interactive user
525 //
526 // Revision 1.99 2004/08/27 01:50:12 fine
527 // restore g2t shared library. Geant complained
528 //
529 // Revision 1.98 2004/08/27 00:17:11 fine
530 // use one extr custom filter is present
531 //
532 // Revision 1.97 2004/08/17 15:58:59 perev
533 // StMuAnalysisMaker loading added
534 //
535 // Revision 1.96 2004/08/16 02:27:39 perev
536 // delete setfiles again
537 //
538 // Revision 1.95 2004/08/12 16:43:26 perev
539 // Cleanup from JohnVu & VP
540 //
541 // Revision 1.94 2004/08/12 00:13:45 perev
542 // JohnWu GC corrections
543 //
544 // Revision 1.93 2004/08/10 19:44:19 perev
545 // Cleanup+StGridCollector
546 //
547 // Revision 1.91 2004/07/21 17:31:12 fine
548 // The default coloring filter has been added to doEvents macro and StEventHeler class
549 // Revision 1.90 2004/06/23 20:06:02 perev
550 // const Int_t replaced by Int_t
551 // Revision 1.89 2004/02/24 16:45:26 fisyak
552 // Add load of libGeom
553 // Revision 1.88 2004/02/02 03:02:41 perev
554 // Defence against qaflag==0
555 // Revision 1.87 2004/02/01 19:11:26 jeromel
556 // indent + printing
557 // Revision 1.86 2003/10/10 19:39:20 perev
558 // Remeve delete fileset. problem for debuging. A leak is small
559 // Revision 1.85 2003/09/07 03:49:11 perev
560 // gcc 3.2 + WarnOff
561 // Revision 1.84 2003/07/17 15:34:12 perev
562 // delete setFiles added
563 // Revision 1.83 2003/05/02 23:12:53 jeromel
564 // StBichsel
565 // Revision 1.82 2003/04/26 03:36:25 jeromel
566 // Forgot to commit
567 // Revision 1.81 2003/02/27 17:01:06 fine
568 // the secondary filter in example has been disabled by default
569 // Revision 1.80 2003/02/26 04:40:29 fine
570 // add one extra filter to display
571 // Revision 1.79 2003/01/17 17:14:06 fine
572 // fix: StEventMaker was not loaded properly
573 // Revision 1.78 2003/01/17 16:26:13 fine
574 // chnage display default parameters
575 // Revision 1.77 2002/11/26 02:30:29 perev
576 // EventLoop added
577 // Revision 1.75 2002/04/14 22:27:29 perev
578 // remove reading dst by default
579 // Revision 1.74 2002/02/23 19:25:55 perev
580 // NotifyMe used
581 // Revision 1.73 2002/01/15 18:28:53 perev
582 // @file logic added
583 // Revision 1.72 2001/12/22 03:47:27 perev
584 // StTpcDb.so is not loaded for event.root case
585 // Revision 1.71 2001/09/27 00:51:34 perev
586 // call StEventMaker conditionally
587 // Revision 1.69 2001/09/17 00:13:14 perev
588 // Load StEventUtilities
589 // Revision 1.67 2001/09/07 18:32:28 perev
590 // help restored
591 // Revision 1.66 2001/09/01 19:56:41 perev
592 // EventDisplay option added
593 // Revision 1.65 2001/05/19 00:32:53 perev
594 // Skip added
595 // Revision 1.64 2001/05/04 20:17:31 perev
596 // remove St_dst_bfc_status::iterator
597 // Revision 1.63 2001/02/27 23:19:38 perev
598 // test for filelist[0]!=0 added
599 // Revision 1.62 2001/02/21 23:16:19 perev
600 // clean up
601 // Revision 1.61 2001/02/14 23:39:17 perev
602 // classs TTable::iterator example introdiced
603 // Revision 1.60 2000/09/06 22:42:41 ullrich
604 // Moved WriteOut StEvent block after the line where the analysis
605 // maker gets created.
606 // Revision 1.59 2000/07/21 01:38:46 perev
607 // GC query changed
608 // Revision 1.58 2000/07/16 23:04:27 perev
609 // Remove redundunt Finish() call
610 // Revision 1.57 2000/07/03 02:08:00 perev
611 // StEvent: vector<TObject*>
612 // Revision 1.56 2000/06/20 14:11:46 kathy
613 // now unpack BfcStatus table in doEvents so people can see if maker errors exist
614 // Revision 1.55 2000/06/19 23:33:29 perev
615 // GC for real data
616 // Revision 1.54 2000/05/18 17:44:54 kathy
617 // turn off by default the writing of output *.event.root file - had it ON by default by accident
618 // Revision 1.53 2000/05/17 16:53:50 kathy
619 // change flag to write out .event.root file to false by default
620 // Revision 1.52 2000/05/17 16:50:47 kathy
621 // put Victor's code to write out .event.root file from doEvents.C in here with a flag to turn off and on - now we can get rid of doEventsOut.C ... don't have to keep up 2 sets of macros
622 // Revision 1.51 2000/05/17 15:58:08 kathy
623 // added some print statements to beginning
624 // Revision 1.50 2000/05/09 19:38:17 kathy
625 // update to use standard default input files and only process few events by default - to make it easy to run in automatic macro testing script
626 // Revision 1.49 2000/04/21 13:40:08 wenaus
627 // correct the doc for nEvents in multifile mode
628 // Revision 1.48 2000/04/18 21:43:12 fine
629 // make TurnDisplay macro available for doEvents
630 // Revision 1.47 2000/04/13 22:14:03 perev
631 // StFile -> StFileI
632 // Revision 1.46 2000/04/13 21:46:34 kathy
633 // remove loading of libtpc_Tables since l3Track table is now dst_track type from global
634 // Revision 1.45 2000/04/12 17:33:45 kathy
635 // put loading of libtpc_Tables back in since Iwona is going back to original tpt_track table
636 // Revision 1.44 2000/04/12 15:29:05 kathy
637 // comment out libtpc by default
638 // Revision 1.43 2000/04/12 15:06:53 kathy
639 // changed all macros that read DSTs to load Tables from libraries: gen,sim,global,dst instead of ALL Tables (previously loaded St_Tables); currently, if you are using DEV to read a DST in NEW,PRO, you must comment out the loading of libtpc_Tables because of a mismatch with tpt_track table
640 // Revision 1.42 2000/04/07 15:54:26 perev
641 // GC added
642 // Revision 1.41 2000/03/20 17:32:55 kathy
643 // setbranches in all macros so that they will work with softlinks - for StIOMaker
644 // Revision 1.40 2000/03/17 23:10:06 kathy
645 // make sure the dst branch is explicitly set in the macros using dst.root files as input - otherwise they don't work properly with soft links
646 // Revision 1.39 2000/01/11 18:20:20 ullrich
647 // Add latests improvements from Victor.
648 // Revision 1.38 2000/01/10 22:06:09 kathy
649 // add owner name and comments
650 // Revision 1.37 1999/11/17 14:34:00 ullrich
651 // Added version with no arguments which prints usage info.
652 // Revision 1.36 1999/11/17 14:23:40 ullrich
653 // Updated for new StEvent/StEventMaker.
654 // owner: Torre Wenaus,Victor Perevoztchikov
655 // what it does: reads .dst.root or .dst.xdf file or files, fills StEvent &
656 // then runs StAnalysisMaker
Definition: StTree.h:125
virtual void SetIOMode(Option_t *iomode="w")
number of transactions
Definition: StIOInterFace.h:35
static void setLevel(unsigned int level)
sets the debug level
Definition: StMuDebug.h:74
A typical Analysis Class.
virtual void SetActive(Bool_t k=kTRUE)
Setters for flags and switches.
Definition: StMaker.h:208
virtual void LoadGeometry(const Char_t *option="detp geometry field_only")
Specifies GEANT3 geometry command.