GenTrig Documentation Page

Questions/Suggestions/Comments?

e-mail to paus@mit.edu

Related Documentation

Short Summary

A generator information based simulation of parts of the CDF II trigger relevant for b physics is presented. The simulation is based on generator level information to which parametric smearing is applied.

Track trigger: The track trigger comprises simulations of the XFT and XTRP boards, the Level-1 track trigger logic, the SVT boards and the Level-2 track trigger logic.

Muon Trigger: A simulation of the CMU chambers together with Level-1 and Level-2 di-muon trigger simulation are also included. Plans for electrons from CES/CPR/CCR exist but have not yet been implemented.

Vertex: In addition, z vertex smearing at the generator level can be specified. The vertex treatment in particular the z position is very critical for the trigger since it changes the acceptance. Since the HEPG bank does not contain the vertex position it has to be generated. GenTrig has the possibility to generate a vertex but this vertex is not stored in the event record which is fine for standalone studies. It is therefore recommended when generating smaples which are written to disk to generate the vertex externally using the GenPrimVert module in genratorMods which write the MVTX storable bank. This bank will then automatically be picked up by GenTrig if it is found in the event record.

Standard CdfObjects: On the request of various people an interface to write out standard CdfTrack, CdfTrackColl has been added and is technically working. More tuning is certainly needed. Presently in the work is the interface to CdfMuon, CdfMuonColl and some scheme for saving the trigger information.

Example tcl files: The GenTrig or FastSim contains many features which are tunable by talk-to TCL scripting. Some standard tcl files are available in:

      GenTrig/tcl/*.tcl

Caveat: The simulation does not replace a detailed analysis of the trigger at the hit level. Instead it provides a tool which allows quick estimates of event yields for B hadron decays.

Make your own MC study - GenTrig based

For the absolute CDF beginner here is a terse startup description in steps of how to get to run GenTrig and how to develop some analysis using the program in an efficient way. This is very much standalone and thus nice as a starter. This is going to be happening on FCDFSGI2

QuickSim Description

A large number of events have been processed using QuickSim described above. They are maintained on fcdfsgi2 in the directory:

A description of the available MonteCarlo is given in the file below: Read them like normal MonteCarlo or data files. They do not contain hits or any raw data banks but only the higher level objects.

In case you want to produce new files send e-mail to paus@mit.edu they might just be produced for you or checkout the tcl file fastsim.tcl in:

      GenTrig/tcl/fastsim.tcl

QuickSim Particle Association

A typical problem is in the MonteCarlo to do particle association. This is very simple in QuickSim since the track Id has been chosen to be the index of the corresponding particle in the HEPG bank.

The code snippet below shows how to use this feature.


  CdfTrackView_h trks;
  CdfTrackView::defTracks(trks);
  CdfTrackView::const_iterator itrk,jtrk;

  EventRecord::ConstIterator Ev_it(Event,"HEPG_StorableBank");
  ConstHandle h_hepg(Ev_it);
  const HEPG_StorableBank &hepg = *h_hepg;

  unsigned int  i,j;

  // Loop over all tracks

  for (itrk=trks->contents().begin(); itrk!=trks->contents().end(); itrk++) {

    for (jtrk=itrk; jtrk!=trks->contents().end(); jtrk++) {
      
      // Not the same track and opposite charge
      if (itrk!=jtrk) {

        i = (*itrk)->id().value();
        j = (*jtrk)->id().value();


        double pt = sqrt(hepg.Px(i)*hepg.Px(i)+hepg.Py(i)*hepg.Py(i));
        cout << "HEPG Properties";
        cout << "\n--  Id: " << setw(6) << (*itrk)->id()
             <<   "   Pid: " << setw(6) << hepg.idhep(i)
             << "\n--  Pt: " << setw(6) << pt            << "  --\n";

        cout << "HEPG Properties";
        cout << "\n--  Pid1: " << hepg.idhep(i)
             << "\n--  Pid2: " << hepg.idhep(j)
             << "\n--  Mo-1: " << hepg.idhep(hepg.jmo1hep(i)-1)
             << "\n--  Mo-2: " << hepg.idhep(hepg.jmo1hep(j)-1)
             << "  --\n";
      }
    }
  }

Modified: Mon Apr 30 19:50:39 CDT 2001 Christoph Paus