Since TrkFixup (R22), the track list definitions have changed, and the description of some of the
lists in the following table are from prior to this change.
The candidates in V0BtaTrack (R22) are removed from the GoodTracksVeryLoose and GoodTracksLoose lists.
The new lists are described
at the charged particles AWG web page!
Standard Lists stored by OPR |
|
| List Name | List Description |
| TaggingList | Candidates with non-zero charge. Mass hypothesis, by design, was to be that assigned by the tagging algorithm. In practice, I am not sure how well this was implemented. I would recommend using ChargedTracks if you need just a list of all tracks. |
| ChargedTracks | Same as Tagging List, but with pion mass hypothesis assigned |
| CalorNeutral | BtaMicroCandidates which are single EMC bumps not matched with any track. Photon mass hypothesis assigned. All single-bump neutral clusters show up in *both* the CalorNeutral *and* CalorClusterNeutral lists |
| CalorClusterNeutral | BtaMicroCandidates that are multi-bump neutral clusters or single bumps which are not part of a cluster which is matched with a track. These candidates may be embedded in charged candidates. In this case the operator BetaTools/BtaOpMakeNeutral.cc can be used to get a neutral candidate out of the charged one. All single-bump neutral clusters show up in *both* the CalorNeutral *and* CalorClusterNeutral lists |
| NeutralHad | BtaMicroCandidates with charge zero and no EMC information. (i.e. a neutral candidate with IFR info but has not been merged with a track or an EMC bump/cluster.) |
| SingleBumpNeutralClusters | Single-Bump-Neutral-Clusters in the EMC |
| SplitKinkCands | |
| pi0MergedDefault | |
| V0BtaTrack | Combines Ks, Lambda, and gamma conversions that are identified as such by the TrkV0Selector module in the TrkFixup package. The candidates in V0BtaTrack are removed from the GoodTracksVeryLoose and GoodTracksLoose lists. details |
Good Track/Neutral Lists Made at Run-TimeModule ListNameSelection (for example: GoodTracksVeryLooseSelection) is created from BetaMicro/BtaGoodTrkSelector.cc (track lists) or from BetaMicro/BtaGoodNeutralSelector.cc (neutral list), and the cut parameters are set in TCL via the BetaMicro/BtaGoodTrackSequence.tcl. | |
| List Name | List Description |
| ChargedTracksAcc | Charged Tracks with
Min Theta: 0.410 |
| GoodTracksVeryLoose | Charged Tracks with
Min Transverse Momentum: 0.0 GeV |
| GoodTracksLoose | Same cuts as GoodTracksVeryLoose with
Min Transverse Momentum: 0.1 GeV |
| GoodTracksAccLoose | Same cuts as GoodTracksLoose with
Min Theta: 0.410 |
| GoodTracksTight | Same as GoodTracksLoose, but with these additionals cuts:
Min # of Dch Hits: 20 |
| GoodPhotonLoose | Candidates from CalorNeutral satisfying:
Min Raw Energy: 0.030 GeV |
| GoodPhotonDefault | Candidates from GoodPhotonLoose with
Min Raw Energy: 0.100 GeV |
| GoodNeutralLooseAcc | Candidates from CalorNeutral satisfying:
Min Raw Energy: 0.030 GeV |
Unlike Standard Lists, Run Time Lists are produced at run-time --- that is, when you run your
analysis application. The following Run Time lists are created by MOST analysis jobs.
If you get an error message when you try to access one of these lists, it probably means that the
list-creating Tcl script
is not sourced during your analysis job. Fixing this may
be as simple as changing a few lines of
Tcl code. Search Hypernews, or ask an
expert what you need to do to make your list available.
#include "AbsEvent/AbsEvent.hh" #include "Beta/BtaCandidate.hh" #include "CLHEP/Alist/AIterator.h"
To access and loop over the ChargedTracks and CalorNeutral lists (for example), add the following code to your analysis module:
In your module's event(AbsEvent *anEvent) function:
HepAList<BtaCandidate> *trackList = Ifd< HepAList<BtaCandidate> >::get( anEvent, "ChargedTracks");
HepAList<BtaCandidate> *neutralList = Ifd< HepAList<BtaCandidate> >::get( anEvent, "CalorNeutral");
// Loop over the list of tracks, and find the maximum energy and the number of tracks.
double emax(0.0);
int ntrk(0);
HepAListIterator<BtaCandidate> trkIter(*trackList);
BtaCandidate *trk(0);
while (trk = trkIter()) {
// Now the loop has started.
// One by one, trk takes on the value of each
// BtaCandidate in the ChargedTracks list.
double etrk = cand->energy();
if (etrk > emax) etrk = emax;
ntrk++;
} // end the loop
// Loop over the list of neutrals. Find the total number of neutrals,
// and the number of neutrals within the EMC's angular acceptance.
int nneu(0);
int nneuAccept(0);
HepAListIterator<BtaCandidate> neuIter(*neutralList);
BtaCandidate *neu(0);
while (neu = neuIter() ) {
// Now the loop has started.
// One by one, neu takes on the value of each
// BtaCandidate in the CalorNeutral list.
nneu++;
double CosTheta = neu->p4().theta();
if ((CosTheta > -0.775) && (CosTheta < 0.962)) {
nneuAccept++;
}
}