[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ repository ]

STAR Offline Software Cross Reference

./StRoot/macros/analysis/doEvents.C

Version: [ .DEV ] [ DEV00 ] [ SL00b_2 ] [ SL99f ]

  1 ///////////////////////////////////////////////////////////////////////////////
  2 //
  3 // $Id: doEvents.C,v 1.49 2000/04/21 13:40:08 wenaus Exp $
  4 //
  5 // Description: 
  6 // Chain to read events from files or database into StEvent and analyze.
  7 // what it does: reads .dst.root or .xdf files and then runs StEventMaker
  8 //          to fill StEvent and StAnalysisMaker to show example of analysis
  9 //
 10 // Environment:
 11 // Software developed for the STAR Detector at Brookhaven National Laboratory
 12 //
 13 // Ways to run:
 14 // If you specify a path, all DST files below that path will be
 15 // found, and the first 'nevents' events in the file set will be
 16 // analyzed.
 17 // The type of DST files searched for is taken from the 'file' parameter.
 18 // If 'file ends in '.dst.root', ROOT DSTs are searched for.
 19 // If 'file ends in '.xdf', XDF DSTs are searched for.
 20 //
 21 // If path begins with '-', 'file' will be taken to be a single file
 22 // to be processed.
 23 //
 24 // example invocation:
 25 // .x doEvents.C(10,"-","some_directory/some_dst_file.xdf")
 26 //
 27 // example ROOT file invocation:
 28 // .x doEvents.C(10,"-","some_directory/some_dst_file.root")
 29 //
 30 // example multi-ROOT file invocation:
 31 // .x doEvents.C(9999,"some_directory","*.dst.root")
 32 //
 33 // Author List: Torre Wenaus, BNL  2/99
 34 //              Victor Perevoztchikov
 35 //  
 36 ///////////////////////////////////////////////////////////////////////////////
 37 //
 38 // $Log: doEvents.C,v $
 39 // Revision 1.49  2000/04/21 13:40:08  wenaus
 40 // correct the doc for nevents in multifile mode
 41 //
 42 // Revision 1.48  2000/04/18 21:43:12  fine
 43 // make TurnDisplay macro available for doEvents
 44 //
 45 // Revision 1.47  2000/04/13 22:14:03  perev
 46 // StFile -> StFileI
 47 //
 48 // Revision 1.46  2000/04/13 21:46:34  kathy
 49 // remove loading of libtpc_Tables since l3Track table is now dst_track type from global
 50 //
 51 // Revision 1.45  2000/04/12 17:33:45  kathy
 52 // put loading of libtpc_Tables back in since Iwona is going back to original tpt_track table
 53 //
 54 // Revision 1.44  2000/04/12 15:29:05  kathy
 55 // comment out libtpc by default
 56 //
 57 // Revision 1.43  2000/04/12 15:06:53  kathy
 58 // 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
 59 //
 60 // Revision 1.42  2000/04/07 15:54:26  perev
 61 // GC added
 62 //
 63 // Revision 1.41  2000/03/20 17:32:55  kathy
 64 // setbranches in all macros so that they will work with softlinks - for StIOMaker
 65 //
 66 // Revision 1.40  2000/03/17 23:10:06  kathy
 67 // 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
 68 //
 69 // Revision 1.39  2000/01/11 18:20:20  ullrich
 70 // Add latests improvements from Victor.
 71 //
 72 // Revision 1.38  2000/01/10 22:06:09  kathy
 73 // add owner name and comments
 74 //
 75 // Revision 1.37  1999/11/17 14:34:00  ullrich
 76 // Added version with no arguments which prints usage info.
 77 //
 78 // Revision 1.36  1999/11/17 14:23:40  ullrich
 79 // Updated for new StEvent/StEventMaker.
 80 //
 81 // owner: Torre Wenaus,Victor Perevoztchikov
 82 // what it does: reads .dst.root or .dst.xdf file or files, fills StEvent &
 83 //      then runs StAnalysisMaker 
 84 ///////////////////////////////////////////////////////////////////////////////
 85 Int_t    usePath = 0;
 86 Int_t    nFile = 0;
 87 TString  thePath;
 88 TString  theFileName;
 89 TString  originalPath;
 90 class    StChain;
 91 StChain  *chain=0;
 92 class StEventDisplayMaker;
 93 StEventDisplayMaker *dsMaker = 0;
 94 TBrowser *b=0;
 95 
 96 const char *dstFile = 0;
 97 const char *xdfFile = 0;
 98 const char *mdcFile = 0;
 99 const char *fileList[] = {dstFile,xdfFile,mdcFile,0};
100 
101 void doEvents()
102 {
103     cout << "Usage: doEvents.C(nevents,\"-\",\"some_directory/some_dst_file.xdf\")" << endl;
104     cout << "       doEvents.C(nevents,\"-\",\"some_directory/some_dst_file.root\")" << endl;
105     cout << "       doEvents.C(nevents,\"some_directory\",\"*.dst.root\")" << endl;     
106 }
107 void doEvents(Int_t,const Char_t **,const char *qaflag = "");
108 void doEvents(Int_t nevents=999, const Char_t *path, const Char_t *file,
109               const char *qaflag = "off");
110 
111 
112 void doEvents(Int_t nevents, const Char_t **fileList, const char *qaflag)
113 {
114     //
115     // First load some shared libraries we need
116     //
117 
118     gSystem->Load("St_base");
119     gSystem->Load("StChain");
120 
121     gSystem->Load("libgen_Tables");
122     gSystem->Load("libsim_Tables");
123     gSystem->Load("libglobal_Tables");
124 
125     gSystem->Load("StUtilities");
126     gSystem->Load("StIOMaker");
127     gSystem->Load("StarClassLibrary");
128     gSystem->Load("StEvent");
129     gSystem->Load("StMagF");
130     gSystem->Load("StEventMaker");
131     gSystem->Load("StAnalysisMaker");
132 
133     //
134     // Handling depends on whether file is a ROOT file or XDF file
135     //
136     chain  = new StChain("StChain");
137     StFileI *setFiles =0;
138     if (fileList) {     //Normal case
139       setFiles= new StFile(fileList);
140     } else        {     //Grand Chalenge
141       gSystem->Load("StChallenger");
142       setFiles = StChallenger::Challenge();
143       setFiles->SetDebug();
144       Int_t Argc=4;
145       const char *Argv[4]= {
146         "-s","dst;hist;runco",
147         "-q","-5<=qxa_3<0.3 && 22>qxc_1>18"
148         };
149       setFiles->Init(Argc,Argv);
150     }
151     StIOMaker *IOMk = new StIOMaker("IO","r",setFiles,"bfcTree");
152      IOMk->SetIOMode("r");
153      IOMk->SetBranch("*",0,"");                 //deactivate all branches
154      IOMk->SetBranch("dstBranch",0,"r");
155      IOMk->SetBranch("runcoBranch",0,"r");
156      IOMk->SetDebug();
157 
158     //
159     // Maker to read events from file or database into StEvent
160     //
161     StEventMaker *readerMaker =  new StEventMaker("events","title");
162 
163 
164     //
165     //  Sample analysis maker
166     //
167     StAnalysisMaker *analysisMaker = new StAnalysisMaker("analysis");
168 
169     //
170     // Initialize chain
171     //
172     Int_t iInit = chain->Init();
173     if (iInit) chain->Fatal(iInit,"on init");
174     chain->PrintInfo();
175 
176     //
177     // Event loop
178     //
179     int istat=0,i=1;
180  EventLoop: if (i <= nevents && istat!=2) {
181      cout << "============================ Event " << i
182           << " start ============================" << endl;
183      chain->Clear();
184      istat = chain->Make(i);
185      if (istat==2) {cout << "Last  event processed. Status = " << istat << endl;}
186      if (istat==3) {cout << "Error event processed. Status = " << istat << endl;}
187      i++;
188      goto EventLoop;
189  }
190 
191     i--;
192     cout << "============================ Event " << i
193          << " finish ============================" << endl;
194     if (nevents > 1) {
195         chain->Clear();
196         chain->Finish();
197     }
198     else {
199         if (!b) {
200             b = new TBrowser;
201         }
202     }
203 }
204 
205 void doEvents(const Int_t nevents, const Char_t *path, const Char_t *file,const char *qaflag)
206 {
207     const char *fileListQQ[]={0,0};
208     if (strncmp(path,"GC",2)==0) {
209       fileListQQ=0;
210     } else if (path[0]=='-') {
211         fileListQQ[0]=file;
212     } else {
213         fileListQQ[0] = gSystem->ConcatFileName(path,file);
214     }
215     doEvents(nevents,fileListQQ,qaflag);
216 }
217 
218 
219 
220 
221 
222 
223 
224 
225 
[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ repository ]
This page was automatically generated by the LXR engine. Visit the LXR main site for more information.
STAR version by Torre Wenaus.
Information on this and other STAR code management tools