BRAT 2.4.5
Class index
Full class index
brahmlib
BRAHMS
ROOT page
//____________________________________________________________________
//
//

//____________________________________________________________________
//
// $Id: BrTrackTree.cxx,v 1.11 2002/03/21 21:26:42 ejkim Exp $
// $Author: ejkim $
// $Date: 2002/03/21 21:26:42 $
// $Copyright: 2001 BRAHMS Collaboration <brahmlib@rhic.bnl.gov>
//

//____________________________________________________________________
#include "BrTrackTree.h"


//____________________________________________________________________
ClassImp(BrTrackTree);

//____________________________________________________________________
TClonesArray *BrTrackTree::fgMrsTracks = 0;
TClonesArray *BrTrackTree::fgTPM1Tracks = 0;
TClonesArray *BrTrackTree::fgTPM2Tracks = 0;
TClonesArray *BrTrackTree::fgFfsTracks  = 0;
TClonesArray *BrTrackTree::fgBfsTracks  = 0;
TClonesArray *BrTrackTree::fgTOFWHits  = 0;
TClonesArray *BrTrackTree::fgTOF1Hits  = 0;
TClonesArray *BrTrackTree::fgTOF2Hits  = 0;
TClonesArray *BrTrackTree::fgTD1Hits  = 0;
TClonesArray *BrTrackTree::fgTMRSHits  = 0;
TClonesArray *BrTrackTree::fgTofwPid  = 0;
TClonesArray *BrTrackTree::fgTOFWCalHits  = 0;

//____________________________________________________________________
 BrTrackTree::BrTrackTree()
{
   // Create an Event object.
   // When the constructor is invoked for the first time, the class static
   // variable fgTracks is 0 and the TClonesArray fgTracks is created.

   if (!fgMrsTracks) fgMrsTracks = new TClonesArray("BrMrsTrack", 100);
   if (!fgTPM1Tracks) fgTPM1Tracks = new TClonesArray("BrDetectorTrack", 100);
   if (!fgTPM2Tracks) fgTPM2Tracks = new TClonesArray("BrDetectorTrack", 100);
   if (!fgFfsTracks)  fgFfsTracks  = new TClonesArray("BrFfsTrack", 100);
   if (!fgBfsTracks)  fgBfsTracks  = new TClonesArray("BrBfsTrack", 100);
   if (!fgTOFWHits)  fgTOFWHits  = new TClonesArray("BrTofDig", 100);
   if (!fgTOF1Hits)  fgTOF1Hits  = new TClonesArray("BrTofDig", 100);
   if (!fgTOF2Hits)  fgTOF2Hits  = new TClonesArray("BrTofDig", 100);
   if (!fgTD1Hits)   fgTD1Hits  = new TClonesArray("BrTofDig", 100);
   if (!fgTMRSHits)   fgTMRSHits  = new TClonesArray("BrTofDig", 100);
   if (!fgTofwPid)   fgTofwPid  = new TClonesArray("BrTofPid", 100);
   if (!fgTOFWCalHits)  fgTOFWCalHits  = new TClonesArray("BrTofDig", 100);
   fMrsTracks  = fgMrsTracks;
   fTPM1Tracks  = fgTPM1Tracks;
   fTPM2Tracks  = fgTPM2Tracks; 
   fFfsTracks   = fgFfsTracks;
   fBfsTracks   = fgBfsTracks;
   fTOFWHits   = fgTOFWHits;
   fTOF1Hits   = fgTOF1Hits;
   fTOF2Hits   = fgTOF2Hits;
   fTD1Hits   = fgTD1Hits;
   fTMRSHits   = fgTMRSHits;
   fTofwPid   = fgTofwPid;
   fTOFWCalHits   = fgTOFWCalHits;
   fNMrsTracks = 0;
   fNTPM1Tracks = 0;
   fNTPM2Tracks = 0;
   fNFfsTracks  = 0;
   fNBfsTracks  = 0;
   fNTOFWHits  = 0;
   fNTOF1Hits  = 0;
   fNTOF2Hits  = 0;
   fNTD1Hits  = 0;
   fNTMRSHits  = 0;
   fNTofwPid  = 0;
   fNTOFWCalHits  = 0;
}

//____________________________________________________________________
 BrTrackTree::~BrTrackTree()
{
   Clear();
   delete fgMrsTracks;
}

//____________________________________________________________________
 void BrTrackTree::AddMrsTrack(BrMrsTrack *mrsTrack)
{
   // Add a new track to the list of tracks for this event.
   // To avoid calling the very time consuming operator new for each track,
   // the standard but not well know C++ operator "new with placement"
   // is called. If tracks[i] is 0, a new Track object will be created
   // otherwise the previous Track[i] will be overwritten.

  TClonesArray &tracks = *fMrsTracks;
  new(tracks[fNMrsTracks++]) BrMrsTrack(*mrsTrack);
}

//____________________________________________________________________
 void BrTrackTree::AddTPM1Track(BrDetectorTrack *tpm1Track)
{
   // Add a new track to the list of tracks for this event.
   // To avoid calling the very time consuming operator new for each track,
   // the standard but not well know C++ operator "new with placement"
   // is called. If tracks[i] is 0, a new Track object will be created
   // otherwise the previous Track[i] will be overwritten.

  TClonesArray &tracks = *fTPM1Tracks;
  new(tracks[fNTPM1Tracks++]) BrDetectorTrack(*tpm1Track);
}

//____________________________________________________________________
 void BrTrackTree::AddTPM2Track(BrDetectorTrack *tpm2Track)
{
   // Add a new track to the list of tracks for this event.
   // To avoid calling the very time consuming operator new for each track,
   // the standard but not well know C++ operator "new with placement"
   // is called. If tracks[i] is 0, a new Track object will be created
   // otherwise the previous Track[i] will be overwritten.

  TClonesArray &tracks = *fTPM2Tracks;
  new(tracks[fNTPM2Tracks++]) BrDetectorTrack(*tpm2Track);
}
 
//____________________________________________________________________
 void BrTrackTree::AddFfsTrack(BrFfsTrack *ffsTrack)
{
   // Add a new track to the list of tracks for this event.
   // To avoid calling the very time consuming operator new for each track,
   // the standard but not well know C++ operator "new with placement"
   // is called. If tracks[i] is 0, a new Track object will be created
   // otherwise the previous Track[i] will be overwritten.

  TClonesArray &tracks = *fFfsTracks;
  new(tracks[fNFfsTracks++]) BrFfsTrack(*ffsTrack);
}
 
//____________________________________________________________________
 void BrTrackTree::AddBfsTrack(BrBfsTrack *bfsTrack)
{
   // Add a new track to the list of tracks for this event.
   // To avoid calling the very time consuming operator new for each track,
   // the standard but not well know C++ operator "new with placement"
   // is called. If tracks[i] is 0, a new Track object will be created
   // otherwise the previous Track[i] will be overwritten.

  TClonesArray &tracks = *fBfsTracks;
  new(tracks[fNBfsTracks++]) BrBfsTrack(*bfsTrack);
}

//____________________________________________________________________
 void BrTrackTree::AddTOFWHit(BrTofDig *tofwHit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTOFWHits;
  new(hits[fNTOFWHits++]) BrTofDig(*tofwHit);
}

//____________________________________________________________________
 void BrTrackTree::AddTOFWCalHit(BrTofDig *tofwCalHit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTOFWCalHits;
  new(hits[fNTOFWCalHits++]) BrTofDig(*tofwCalHit);
}

//____________________________________________________________________
 void BrTrackTree::AddTOF1Hit(BrTofDig *tof1Hit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTOF1Hits;
  new(hits[fNTOF1Hits++]) BrTofDig(*tof1Hit);
}

//____________________________________________________________________
 void BrTrackTree::AddTOF2Hit(BrTofDig *tof2Hit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTOF2Hits;
  new(hits[fNTOF2Hits++]) BrTofDig(*tof2Hit);
}

//____________________________________________________________________
 void BrTrackTree::AddTD1Hit(BrTofDig *td1Hit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTD1Hits;
  new(hits[fNTD1Hits++]) BrTofDig(*td1Hit);
}
//____________________________________________________________________
 void BrTrackTree::AddTMRSHit(BrTofDig *tmrsHit) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &hits = *fTMRSHits;
  new(hits[fNTMRSHits++]) BrTofDig(*tmrsHit);
}

//____________________________________________________________________
 void BrTrackTree::AddTofwPid(BrTofPid *tofwPid) {
  //Add a new TOFW hit to list of tofw hits

  TClonesArray &pid = *fTofwPid;
  new(pid[fNTofwPid++]) BrTofPid(*tofwPid);
}
//____________________________________________________________________
 void BrTrackTree::SetEventHeader(BrEventHeader *header) {
  fEventHeader.SetEventHeader(header);
}

//____________________________________________________________________
 void BrTrackTree::Clear(Option_t *option) {
   fMrsTracks->Clear(option);
   fTPM1Tracks->Clear(option);
   fTPM2Tracks->Clear(option);  
   fFfsTracks->Clear(option);
   fBfsTracks->Clear(option);
   fTOFWHits->Clear(option);
   fTOF1Hits->Clear(option);
   fTOF2Hits->Clear(option);
   fTD1Hits->Clear(option);
   fTMRSHits->Clear(option);
   fTofwPid->Clear(option);
   fTOFWCalHits->Clear(option);
  
   fNMrsTracks = 0;
   fNTPM1Tracks = 0;
   fNTPM2Tracks = 0;
   fNFfsTracks  = 0;
   fNBfsTracks  = 0;
   fNTOFWHits  = 0;
   fNTOF1Hits  = 0;
   fNTOF2Hits  = 0;
   fNTD1Hits  = 0;
   fNTMRSHits  = 0;
   fNTofwPid  = 0;
   fNTOFWCalHits  = 0;
 
   fNTPM1Clusters = 0;
   fNTPM2Clusters = 0;

   fTileMult=0;
   fSiMult=0;
   fMultMult=0.;

   fMultCent=0.;
   fTileCent=0.;
   fSiCent=0.;

   fRdoBB.Clear();
   fRdoZDC.Clear();
   fMrsTrackVertex.Clear();
   fMRSClusterVertex.Clear();
   fBbVertex.Clear();

   fFibTpm2F.Clear();
   fFibTpm2B.Clear();
   fDvDig.Clear();


}

//____________________________________________________________________
 void BrTrackTree::Reset(Option_t *option)
{
  // Static function to reset all static objects for this event
  //   fgTracks->Delete(option);
  delete fgMrsTracks; fgMrsTracks = 0;
  delete fgTPM1Tracks; fgTPM1Tracks = 0;
  delete fgTPM2Tracks; fgTPM2Tracks = 0;
  delete fgFfsTracks; fgFfsTracks = 0;
  delete fgBfsTracks; fgFfsTracks = 0;
  delete fgTOFWHits; fgTOFWHits = 0;
  delete fgTOF1Hits; fgTOF1Hits = 0;
  delete fgTOF2Hits; fgTOF2Hits = 0;
  delete fgTD1Hits; fgTD1Hits = 0;
  delete fgTMRSHits; fgTMRSHits = 0;
  delete fgTofwPid; fgTofwPid = 0;
  delete fgTOFWCalHits; fgTOFWCalHits = 0;

}

//  $Log: BrTrackTree.cxx,v $
//  Revision 1.11  2002/03/21 21:26:42  ejkim
//  add TOFWCal Object for DANA!
//
//  Revision 1.10  2002/01/03 18:06:41  ejkim
//  add trigger counter for pp running
//
//  Revision 1.9  2001/12/14 19:32:06  ejkim
//  added DVM information
//
//  Revision 1.8  2001/12/14 16:10:33  ejkim
//
//
//  Fixed bug
//
//  Revision 1.7  2001/12/12 21:27:26  ejkim
//  Instead of "BrPid", put "BrTofPid".
//
//  Revision 1.6  2001/12/12 19:39:39  ejkim
//  Added BrBbVertex & TofPid Tofw Information
//
//  Revision 1.5  2001/11/07 20:30:00  ejkim
//  added TPM2 Fib Object...
//
//  Revision 1.4  2001/11/05 06:53:17  ouerdane
//  changed FFS to Ffs, MRS to Mrs etc
//
//  Revision 1.3  2001/07/13 15:34:45  ejkim
//  Add TPM1/TPM2 Number of Clusters, MultCent etc
//
//  Revision 1.2  2001/06/22 17:35:32  cholm
//  Change names so that every data class has the same format so that
//  we have that down from the very beginning, so that we will not have to
//  worry about that later on.  The affected classes are:
//
//
//          BrRdoBB             ->        BrBbRdo
//          BrRdoZDC            ->        BrZdcRdo
//  	BrTPCCluster	    ->	      BrTpcCluster
//  	BrTPCClusterTable   ->	      BrTpcClusterTable
//
//  Revision 1.1.1.1  2001/06/21 14:55:02  hagel
//  Initial revision of brat2
//
//  Revision 1.8  2001/06/16 17:25:34  videbaek
//  add removal in destcurtor
//
//  Revision 1.7  2001/03/23 14:22:22  ejkim
//  Add TPM2 track
//
//  Revision 1.6  2001/01/29 20:37:06  cholm
//  Updated to use the new data objects for the multiplicity array. See the
//  relevant classes (BrTileDig, BrTileRdo, BrSiDig, BrSiRdo) for more details.
//
//  Revision 1.5  2001/01/02 14:17:07  videbaek
//  Added stuff for FS
//
//  Revision 1.4  2001/01/01 20:47:17  bramreco
//  Add BdL to output in ListParameters
//
//  Revision 1.3  2000/12/22 18:38:22  videbaek
//  Add TPM1 tracks to tracktree
//
//  Revision 1.2  2000/12/20 00:15:20  hagel
//  Improvements to bring into spec
//
//  Revision 1.1  2000/12/19 03:22:38  hagel
//  Initial Revision
//

This page automatically generated by script docBrat by Christian Holm

Copyright ; 2002 BRAHMS Collaboration <brahmlib@rcf.rhic.bnl.gov>
Last Update on by

Validate HTML
Validate CSS