StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EEmcTTMMaker.cxx
1 // $Id: EEmcTTMMaker.cxx,v 1.30 2009/02/04 20:33:24 ogrebeny Exp $
4 // doxygen info here
30 #include <iostream>
31 #include <sstream>
32 
33 #include "TList.h"
34 #include "TMap.h"
35 #include "TFile.h"
36 #include "TTree.h"
37 #include "TH1F.h"
38 
39 #include "StChain.h"
40 #include "St_DataSetIter.h"
41 
42 #include "StIOMaker/StIOMaker.h"
43 
44 #include "StThreeVectorF.hh"
45 #include "StThreeVectorD.hh"
46 #include "StPhysicalHelixD.hh"
47 
48 #include "StEvent/StTrackTopologyMap.h"
49 #include "StEvent/StRunInfo.h"
50 
51 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
52 #include "StMuDSTMaker/COMMON/StMuDst.h"
53 #include "StMuDSTMaker/COMMON/StMuEvent.h"
54 #include "StMuDSTMaker/COMMON/StMuTrack.h"
55 #include "StMuDSTMaker/COMMON/StMuEmcCollection.h"
56 
57 #include "StEEmcUtil/EEmcGeom/EEmcGeomDefs.h"
58 #include "StEEmcUtil/EEmcGeom/EEmcGeomSimple.h"
59 
60 #include "StEEmcUtil/StEEmcSmd/StEEmcSmdGeom.h"
61 
62 #include "StEEmcUtil/database/StEEmcDb.h"
63 #include "StEEmcUtil/database/EEmcDbItem.h"
64 #include "StEEmcUtil/EEfeeRaw/EEname2Index.h"
65 
66 #include "EEmcTower.h"
67 #include "EEmcTTMatch.h"
68 #include "EEmcTTMMaker.h"
69 
70 
71 #if !defined(ST_NO_NAMESPACES)
72 using std::map;
73 using std::ostream;
74 using std::ostringstream;
75 #endif
76 
77 
78 ClassImp(EEmcTTMMaker);
79 
80 
81 
82 const Int_t EEmcTTMMaker::kDefMaxCTBsum = 1000;
83 const Int_t EEmcTTMMaker::kDefMinTrackHits = 5;
84 const Double_t EEmcTTMMaker::kDefMinTrackLength = 20.0;
85 const Double_t EEmcTTMMaker::kDefMinTrackPt = 0.1;
86 
87 const Double_t EEmcTTMMaker::kDefMinTrackEta = 0.0;
88 const Double_t EEmcTTMMaker::kDefMaxTrackEta = 2.2;
89 
90 const Double_t EEmcTTMMaker::kDefDeltaPhiCut = 0.7;
91 const Double_t EEmcTTMMaker::kDefDeltaEtaCut = 0.7;
92 
93 //_____________________________________________________________________________
95  const char* self , // this maker name
96  StMuDstMaker *mumaker
97  )
98  : StMaker(self),mMuDstMaker(mumaker),mEEmcDb(0),mGeom(EEmcGeomSimple::Instance()) {
99 
100  if( mMuDstMaker == NULL )
101  Fatal("EEmcTTMMaker","invalid StMuDstMaker");
102 
103 
104  // simple EEMC geometry description
105  //if( (mGeom = new EEmcGeomSimple()) == NULL)
106  // Fatal("EEmcTTMMaker","cannot create EEmcGeomSimple class");
107 
108  //mDebugLevel = kWarning;
109 
110  mFileName = TString(GetName());
111  mFileName.ToLower();
112  mFileName += ".ndst.root";
113  mFile=NULL;
114 
116  AddZPosition("pres",kEEmcZPRE1+0.1);
117  AddZPosition("post",kEEmcZPOST-0.1);
118  AddZPosition("smd" ,kEEmcZSMD);
119 
120  // cuts
121  mMaxCTBsum = kDefMaxCTBsum;
122  mMinTrackHits = kDefMinTrackHits;
123  mMinTrackLength = kDefMinTrackLength;
124  mMinTrackPt = kDefMinTrackPt;
125  mMinTrackEta = kDefMinTrackEta;
126  mMaxTrackEta = kDefMaxTrackEta;
127 
128  //
129  mPhiFac = kDefDeltaPhiCut;
130  mEtaFac = kDefDeltaEtaCut;
131 
132  //
133  mTrackList = new TList;
134  mTowerList = new TList;
135  mMatchList = new TList;
136  //
137  mTowerList->SetOwner();
138  mMatchList->SetOwner();
139  //
140  mEvInfo = NULL;
141  mEvSumm = NULL;
142  mEvTrig = NULL;
143  //
144  mTreeOut = false;
145  //
146  ResetStats();
147 
148 }
149 
150 //_____________________________________________________________________________
153  if( mTree !=NULL ) delete mTree;
154  if( mFile !=NULL ) delete mFile;
155  //if( mGeom !=NULL ) delete mGeom;
156 
157  if( mMatchList!=NULL ) delete mMatchList;
158  if( mTrackList!=NULL ) delete mTrackList;
159  if( mTowerList!=NULL ) delete mTowerList;
160 }
161 
162 
163 //_____________________________________________________________________________
165 Int_t
167  mEEmcDb = (StEEmcDb*)this->GetDataSet("StEEmcDb");
168  if(!mEEmcDb)
169  Fatal("EEmcTTMMaker","invalid StEEmcDbMaker");
170 
171  ResetStats();
172  //
173  mFile = new TFile(mFileName, "RECREATE"); if(!mFile) return kStErr;
174  mTree = new TTree("ttm","TPC track to EEmc tower matches"); if(!mTree) return kStErr;
175  //
176  mTree->Branch("matches","TList",&mMatchList,32768,0);
177  // three exta branches for (nano)dst
178  mTree->Branch("info" ,"StEventInfo" ,&mEvInfo ,32768,0);
179  mTree->Branch("summary" ,"StEventSummary" ,&mEvSumm ,32768,0);
180  mTree->Branch("trigger" ,"StMuTriggerIdCollection",&mEvTrig ,32768,0);
181 
182  // control histos
183  mFile->mkdir("histos");
184  mFile->cd("histos");
185 
186  // remove magic constants later
187  // histList = new TList();
188  hTrackNHits = new TH1F("hTrankNHits","hits/track" ,100, 0.0,100 );
189  hTrackLen = new TH1F("hTrackLen" ,"track length [cm]" ,500, 0.0,500.0);
190  hTrackPt = new TH1F("hTrackPt" ,"p_T [GeV]" ,500, 0.0, 5.0);
191  hTrackPtot = new TH1F("hTrackPtot" ,"p_tot [GeV]" ,500, 0.0, 5.0);
192 
193  hTrackDCA[0] = new TH1F("hTrackDCAX" , "x_vtxdca [cm]" ,200,- 50.0, 50.0);
194  hTrackDCA[1] = new TH1F("hTrackDCAY" , "y_vtxdca [cm]" ,200, -50.0, 50.0);
195  hTrackDCA[2] = new TH1F("hTrackDCAZ" , "z_vtxdca [cm]" ,200, -5.0, 5.0);
196 
197  mFile->cd("");
198 
199 
200 
201  return StMaker::Init();
202 }
203 
204 //_____________________________________________________________________________
206 Int_t
208  // static int nDPhi=0;
209  mNEvents++;
210  //
211  mTrackList->Clear();
212  mTowerList->Clear();
213  mMatchList->Clear();
214 
215  //
216  StMuDst *muDst = mMuDstMaker->muDst(); // get pointer to _the_ _data_
217 
218  // sanity checks
219  if(muDst==NULL) {
220  Warning("Make","%s error, muDST maker data missing",GetName());
221  return kStErr;
222  }
223 
224  if(mEEmcDb->valid()<=0) {
225  Warning("Make","%s: missing EEMC Db records",GetName());
226  return kStErr;
227  }
228 
229  // real work begins here
230  StMuEvent* muEvent = muDst->event(); // fetch microEvent data
231  if (!muEvent) {
232  Warning("Make","%s: no MuEvent data for this event",GetName());
233  return kStErr;
234  }
235  // ignore event too many tracks
236  if( muEvent->ctbMultiplicity() > mMaxCTBsum ) return kStOK;
237 
238  // tracks are now in a TObjArray -- JCW 08/24/05
239  TObjArray *tracks = muDst->primaryTracks(); // get primary tracks
240  if (!tracks) {
241  Warning("Make","%s: no tracks for this event",GetName());
242  return kStErr;
243  }
244  //
245  StMuEmcCollection *emc = muDst->muEmcCollection(); // fetch endcap data
246  if (!emc) {
247  Info("Make","%s: no EMC data for this event",GetName());
248  return kStErr;
249  }
250  //
251  if(emc->getNEndcapTowerADC()<=0) {
252  Info("Make","%s: no EEMC tower data for this event",GetName());
253  return kStErr;
254  }
255 
256  StEventInfo &evinfo = muEvent->eventInfo(); // event info
257  StEventSummary &evsumm = muEvent->eventSummary(); // event summary
258  StMuTriggerIdCollection &evtrig = muEvent->triggerIdCollection(); // trigger Id's
259 
260  mEvInfo = &evinfo;
261  mEvSumm = &evsumm;
262  mEvTrig = &evtrig;
263 
264  // select "good" tracks
265  TIter nextTrack(tracks);
266  StMuTrack *track = NULL;
267 
268  while ( (track = (StMuTrack *)nextTrack()) ) {
269  StThreeVectorF p =track->p();
270  StThreeVectorF dca=track->dca();
271 
272  // control histograms
273  hTrackNHits->Fill(track->nHitsFit());
274  hTrackLen ->Fill(track->lengthMeasured());
275  hTrackPt ->Fill(track->pt());
276  hTrackPtot ->Fill(p.mag());
277 
278  hTrackDCA[0] ->Fill(dca.x());
279  hTrackDCA[1] ->Fill(dca.y());
280  hTrackDCA[2] ->Fill(dca.z());
281 
282  if ( ! AcceptTrack(track) ) continue;
283  mTrackList->Add(track);
284  }
285 
286  // no good tracks
287  if( mTrackList->IsEmpty() ) {
288 #if DEBUG
289  Info("Make","no good tracks for this event");
290 #endif
291  return kStOK ; // what the ...
292  }
293 
294  // do the matching
295  int ntrack = 0;
296  for (Int_t i=0; i< emc->getNEndcapTowerADC(); i++) { // loop over EEMC hits
297  // get endcap hit(s) and use dbase to subtract pedestal and apply gain
298  int adc,sec,sub,eta; // back to Fortran++
299  float adcped,edep;
300  // some idiot changed indexing scheme in the middle of the run
301  emc->getEndcapTowerADC(i,adc,sec,sub,eta);
302  if (adc<=0) continue; // how about zero suppression :))
303 
304  //const EEmcDbItem *dbi = mEEmcDb->getT(sec+1,sub+'A',eta+1); // fortran scheiss ....
305  const EEmcDbItem *dbi = mEEmcDb->getT(sec,sub+'@',eta);
306  // some idiot changed indexing scheme in the middle of the run
307  if(dbi==NULL) continue;
308  // now because of that idiot I have to do this scheiss
309  sec--; sub--; eta--;
310 
311  adcped = float(adc) - dbi->ped;
312  edep = (dbi->gain>0.0) ? adcped/dbi->gain : 0.0;
313  if(adcped<0.0) continue;
314 
315  //
316  EEmcTower *eemcHit = new EEmcTower(sec,sub,eta,adcped,edep);
317  EEmcTTMatch *eemcMatch = new EEmcTTMatch();
318  mTowerList->Add(eemcHit);
319  eemcMatch->Add(eemcHit);
320 
321  double phi0 = mGeom.getPhiMean(sec,sub); // fast inlines
322  double eta0 = mGeom.getEtaMean(eta);
323  double phiHW = mGeom.getPhiHalfWidth();
324  double etaHW = mGeom.getEtaHalfWidth(eta);
325  double dphi = 0.0;
326  double deta = 0.0;
327 
328  TIter nextTrack(mTrackList);
329  while( (track=(StMuTrack *)nextTrack()) != NULL ) {
330  TVector3 r;
331  // TODO maybe add tracks that touch the tower for better cleanup
332  // of multiple tracks per tower
333  bool matched=false;
334  map<double,TString>::const_iterator zpos=mZ.begin();
335  for(unsigned int k=0; zpos!=mZ.end() ; ++zpos,k++) {
336  double z = zpos->first;
337  matched=false;
338  if( ! EEmcTTMatch::ExtrapolateToZ(track,z,r) ) break; // track 'hit' at z
339  // FIXME the matching algorithm implicitely assumes that zpos depths are inside EEMC
340  dphi = fmod(phi0 - r.Phi(),TMath::TwoPi()); // fixed , make sure that dphi is within [0,2pi] domain
341  deta = (eta0 - r.Eta() );
342  if( ! MatchTrack(dphi,deta,phiHW,etaHW) ) break;
343  matched=true;
344  }
345  if(!matched) continue;
346  eemcMatch->Add(track);
347  ntrack++;
348  }
349  if( eemcMatch->Matches() > 0 )
350  mMatchList->Add(eemcMatch);
351  else
352  delete eemcMatch; // stop leaking
353  }
354  if(mTreeOut && ntrack>0) mTree->Fill();
355  mNMatched += ntrack;
356  return kStOK;
357 }
358 
359 //_____________________________________________________________________________
360 void
361 EEmcTTMMaker::Clear(Option_t *option ) {
362  //TString opt = option;
363  //opt.ToLower();
364  //if(opt.Contains("A")) { doSth() } elseif (opt.Contains("B")) { doSthElse() };
365  //mMatchList->Clear();
366  //mTrackList->Clear() ; // we do not own this
367  //mTowerList->Clear(); // we own that :) the beauty of C++
368  StMaker::Clear();
369 }
370 
371 //_____________________________________________________________________________
373 Int_t
375  if(mTreeOut && mTree!=NULL) mFile->Write();
376  return kStOK;
377 }
378 
379 
380 //_____________________________________________________________________________
383 Bool_t
385  if(! track->topologyMap().trackTpcOnly() ) return kFALSE;
386  if( track->type() != 1 ) return kFALSE;
387  if( track->flag() <= 0 ) return kFALSE;
388  if( track->nHitsFit() < mMinTrackHits ) return kFALSE;
389  if( track->length() < mMinTrackLength ) return kFALSE;
390  if( track->pt() < mMinTrackPt ) return kFALSE;
391  if( track->eta() < mMinTrackEta ) return kFALSE;
392  if( track->eta() > mMaxTrackEta ) return kFALSE;
393  return kTRUE;
394 }
395 
396 //_____________________________________________________________________________
403 Bool_t
405  const double dphi , // track hit to tower center distance
406  const double deta,
407  const double phihw, // tower half-widths
408  const double etahw)
409 {
410 
411  if( mPhiFac*phihw < fabs(dphi) ) return kFALSE;
412  if( mEtaFac*etahw < fabs(deta) ) return kFALSE;
413  return kTRUE;
414 }
415 
416 
417 
418 
419 
420 
421 
422 //_____________________________________________________________________________
425 ostream&
426 EEmcTTMMaker::Summary(ostream &out ) const
427 {
428  out << "<EEmcTTMMaker:Summary>\n";
429  out << " <Maker Name=\"" << GetName() << "\" />\n";
430 
431  out.setf(ios_base::fixed,ios_base::floatfield);
432  out.precision(2);
433 
434  out << " <CutsSummary>\n";
435  cout.precision(2);
436 
437  out << " max CTB sum allowed " << mMaxCTBsum << "\n\n";
438  //
439  out << " min hits/track required " << mMinTrackHits << "\n";
440  out << " min track length required " << mMinTrackLength << "\n";
441  out << " min track transverse momentum required " << mMinTrackPt << "\n";
442  out << " min track pseudorapidity at origin required " << mMinTrackEta << "\n";
443  out << " max track pseudorapidity at origin required " << mMaxTrackEta << "\n\n";
444  //
445  out << " tracks are matched at the following depths:\n";
446  map<double,TString>::const_iterator zpos;
447  int k=0;
448  for(zpos=mZ.begin(); zpos!=mZ.end() ; ++zpos)
449  out << " " << ++k << ". z=" << zpos->first << " \"" << zpos->second << "\"\n";
450  //
451  out << " max track to tower center dist. " << mPhiFac << " x tower half-width (phi)\n";
452  out << " max track to tower center dist. " << mEtaFac << " x tower half-width (eta)\n";
453  out << " </CutsSummary>\n";
454 
455  if(mNEvents>0) {
456  out << " <Statistics>\n";
457  out << " *** Statistics:\n";
458  out << " total # of events " << mNEvents << "\n";
459  out << " # of matched tracks " << mNMatched << "\n";
460  out << " # of matched tracks/event " << float(mNMatched)/mNEvents << "\n";
461  out << " </Statistics>\n";
462  }
463  out << "</EEmcTTMMaker:Summary>\n";
464  out.setf(ios_base::fmtflags(0),ios_base::floatfield);
465  return out;
466 }
467 
468 
469 
470 
471 // ================================================================================================
472 ostream& operator<<(ostream &out, const EEmcTTMMaker &ttm) {
473  return ttm.Summary(out);
474 }
475 
476 
477 
478 
479 // $Log: EEmcTTMMaker.cxx,v $
480 // Revision 1.30 2009/02/04 20:33:24 ogrebeny
481 // Moved the EEMC database functionality from StEEmcDbMaker to StEEmcUtil/database. See ticket http://www.star.bnl.gov/rt2/Ticket/Display.html?id=1388
482 //
483 // Revision 1.29 2007/07/12 19:27:23 fisyak
484 // Add includes for TMath for ROOT 5.16
485 //
486 // Revision 1.28 2005/08/24 14:17:12 jwebb
487 // Primary tracks now in a TObjArray. Code has been updated, and should
488 // "just work".
489 //
490 // Revision 1.27 2004/10/21 13:31:36 balewski
491 // to match new name of emcCollection in muDst
492 //
493 // Revision 1.26 2004/07/08 00:45:21 balewski
494 // cleanup
495 //
496 // Revision 1.25 2004/06/03 21:02:28 zolnie
497 // fixed subtle bug: when e.g. dphi = +180.(tower center) - -180.0(track)
498 // the match would be rejected - in practice it never happen
499 //
500 // Revision 1.24 2004/05/10 23:02:47 zolnie
501 // EEmcTTMMaker produces now nanoDST
502 //
503 // Revision 1.23 2004/05/07 22:02:56 zolnie
504 // fixed a nasty memory leak in EEmcTTMMaker
505 //
506 // Revision 1.22 2004/05/06 16:02:49 zolnie
507 // more docs
508 //
509 // Revision 1.21 2004/05/05 23:00:51 zolnie
510 // more docs
511 //
512 // Revision 1.20 2004/05/05 22:04:16 zolnie
513 // forgor about EEmcTower
514 //
515 // Revision 1.19 2004/05/05 21:37:37 zolnie
516 // ver 2.0 released
517 //
518 // Revision 1.18 2004/05/04 18:28:55 zolnie
519 // version after split
520 //
521 // Revision 1.17 2004/04/15 18:08:18 zolnie
522 // *** empty log message ***
523 //
524 // Revision 1.16 2004/04/14 16:20:25 zolnie
525 // added static method Run for faster analysis under root4star
526 //
527 // Revision 1.15 2004/04/13 17:26:09 zolnie
528 // more adaptation needed
529 //
530 // Revision 1.14 2004/04/13 16:34:17 zolnie
531 // *** empty log message ***
532 //
533 // Revision 1.13 2004/04/13 15:48:11 zolnie
534 // fixes for some idiot changed indexing scheme and implementation
535 // of some vital functions in the middle of the run
536 //
537 // Revision 1.12 2004/04/13 14:53:39 zolnie
538 // *** empty log message ***
539 //
540 // Revision 1.11 2004/04/12 16:19:59 balewski
541 // DB cleanup & update
542 //
543 // Revision 1.10 2004/01/27 20:38:42 zolnie
544 // more docs
545 //
546 // Revision 1.9 2004/01/27 16:26:15 zolnie
547 // polished doxygen documentation
548 //
549 // Revision 1.8 2004/01/26 22:54:15 zolnie
550 // after name cleanup
551 //
552 // Revision 1.7 2004/01/26 21:51:54 zolnie
553 // shorter names
554 //
555 // Revision 1.6 2004/01/26 21:08:32 zolnie
556 // working track/tower display (before big farewell cleanup)
557 //
558 // Revision 1.5 2004/01/19 22:07:50 zolnie
559 // toward track/tower display
560 //
561 // Revision 1.4 2004/01/14 22:59:02 zolnie
562 // use doxygen for documentation
563 //
564 // Revision 1.3 2004/01/06 22:42:55 zolnie
565 // provide summary/statistics info
566 //
567 // Revision 1.2 2004/01/06 21:33:51 zolnie
568 // release
569 //
570 // Revision 1.1 2004/01/06 17:45:10 zolnie
571 // close to release
572 //
573 
574 
575 
576 
577 
578 
579 
Double_t lengthMeasured() const
Returns length of track (cm) from first to last measured point.
Definition: StMuTrack.cxx:418
void ResetZPositionsArray()
clears z positions array
Definition: EEmcTTMMaker.h:79
short type() const
Returns the track type: 0=global, 1=primary, etc (see StEvent manual for type information) ...
Definition: StMuTrack.h:229
StMuDst * muDst()
Definition: StMuDstMaker.h:425
static const Double_t kDefDeltaPhiCut
default value for the maximum distance in phi from the tower center
Definition: EEmcTTMMaker.h:55
Double_t pt() const
Returns pT at point of dca to primary vertex.
Definition: StMuTrack.h:256
Double_t length() const
Returns length of track (cm) from primary vertex to last measured point.
Definition: StMuTrack.cxx:416
Float_t getEtaHalfWidth(UInt_t eta) const
class EEmcTTMMaker
Definition: EEmcTTMMaker.h:40
virtual void Clear(Option_t *option="")
User defined functions.
Definition: StMaker.cxx:634
static const Double_t kDefMinTrackPt
default value for the minimum track pT allowed
Definition: EEmcTTMMaker.h:49
EEmcTTMMaker(const char *self="ttmmk", class StMuDstMaker *mumaker=NULL)
Float_t getPhiMean(UInt_t sec) const
ostream & Summary(ostream &out) const
prints matching cuts and statistics summary
void ResetStats()
resets the collected statistics
Definition: EEmcTTMMaker.h:151
void AddZPosition(const TString name, const double zpos)
Definition: EEmcTTMMaker.h:83
UShort_t nHitsFit() const
Return total number of hits used in fit.
Definition: StMuTrack.h:239
virtual void Clear(Option_t *option="")
short flag() const
Returns flag, (see StEvent manual for type information)
Definition: StMuTrack.h:230
Int_t Matches()
returns number of matched tracks
Definition: EEmcTTMatch.cxx:95
static const Double_t kDefMaxTrackEta
default value for the maximum track pseudorapidity at origin allowed
Definition: EEmcTTMMaker.h:53
const StThreeVectorF & p() const
Returns 3-momentum at dca to primary vertex.
Definition: StMuTrack.h:259
virtual Int_t Make()
process one event
Double_t eta() const
Returns pseudo rapidity at point of dca to primary vertex.
Definition: StMuTrack.h:257
Bool_t AcceptTrack(const StMuTrack *track)
whether accept the track or not
static TObjArray * primaryTracks()
returns pointer to a list of tracks belonging to the selected primary vertex
Definition: StMuDst.h:301
virtual ~EEmcTTMMaker()
the destructor
static StMuEmcCollection * muEmcCollection()
returns pointer to current StMuEmcCollection
Definition: StMuDst.h:389
static StMuEvent * event()
returns pointer to current StMuEvent (class holding the event wise information, e.g. event number, run number)
Definition: StMuDst.h:320
Float_t getPhiHalfWidth(UInt_t sec=0, UInt_t ssec=0) const
Bool_t MatchTrack(const double dphi, const double deta, const double phihw, const double etahw)
whether track matches or not
virtual const char * GetName() const
special overload
Definition: StMaker.cxx:237
EEMC simple geometry.
Definition: Stypes.h:40
void Add(EEmcTower *t)
adds tower data
Definition: EEmcTTMatch.cxx:78
StThreeVectorF dca(Int_t vtx_id=-1) const
Returns 3D distance of closest approach to primary vertex.
Definition: StMuTrack.cxx:359
EEmcTTMatch class contains results of TPC track to EEMC tower matching.
Definition: EEmcTTMatch.h:22
static const Int_t kDefMaxCTBsum
default value for the maximum CTB sum allowed
Definition: EEmcTTMMaker.h:43
Definition: Stypes.h:44
static const Double_t kDefDeltaEtaCut
default value for the maximum distance in eta from the tower center
Definition: EEmcTTMMaker.h:57
static const Double_t kDefMinTrackEta
default value for the minimum track pseudorapidity at origin allowed
Definition: EEmcTTMMaker.h:51
Collection of trigger ids as stored in MuDst.
StTrackTopologyMap topologyMap() const
Returns topology map.
Definition: StMuTrack.h:254
EEmcTower holds information about an EEMC tower &#39;hit&#39;.
Definition: EEmcTower.h:17
static Bool_t ExtrapolateToZ(const StMuTrack *track, const double z, TVector3 &r)
given track and position z return TVector3 with a
virtual Int_t Finish()
cleans up at the end
virtual Int_t Init()
initialize maker
static const Double_t kDefMinTrackLength
default value for the minimum track length allowed
Definition: EEmcTTMMaker.h:47
static const Int_t kDefMinTrackHits
default value for the minimum TPC hits/track allowed
Definition: EEmcTTMMaker.h:45
Float_t getEtaMean(UInt_t eta) const