Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BesEvent Class Reference

#include <BesEvent.h>

List of all members.

Public Member Functions

 BesEvent ()
 BesEvent ()
virtual void Clear (Option_t *option="")
virtual void Clear (Option_t *option="")
virtual void ConstructEmcTrackFromRec (BesGeoTrack *emcTrack, const TRecEmcShower *recTrack)
virtual void ConstructEmcTrackFromRec (BesGeoTrack *emcTrack, const TRecEmcShower *recTrack)
virtual void ConstructMdcTrackFromRec (BesGeoTrack *mdcTrack, const TRecMdcTrack *recTrack, TDisTrack *recEvent)
virtual void ConstructMdcTrackFromRec (BesGeoTrack *mdcTrack, const TRecMdcTrack *recTrack, TDisTrack *recEvent)
virtual void ConstructMucTrackFromRec (BesGeoTrack *mucTrack, const TRecMucTrack *recTrack)
virtual void ConstructMucTrackFromRec (BesGeoTrack *mucTrack, const TRecMucTrack *recTrack)
virtual void ConstructTofTrackFromRec (BesGeoTrack *tofTrack, const TRecTofTrack *recTrack, TDisTrack *recEvent)
virtual void ConstructTofTrackFromRec (BesGeoTrack *tofTrack, const TRecTofTrack *recTrack, TDisTrack *recEvent)
virtual void Delete (Option_t *option="")
virtual void Delete (Option_t *option="")
virtual void DrawHits (Option_t *option)
virtual void DrawHits (Option_t *option)
virtual void DrawTracks (Option_t *option)
virtual void DrawTracks (Option_t *option)
Int_t GetDay ()
Int_t GetDay ()
const TRecMdcDedxGetDedx (Int_t i) const
const TRecMdcDedxGetDedx (Int_t i) const
const TObjArray * GetDedxCol (TDisTrack *recEvent) const
const TObjArray * GetDedxCol (TDisTrack *recEvent) const
const Int_t GetDedxNum (TDisTrack *recEvent) const
const Int_t GetDedxNum (TDisTrack *recEvent) const
const TEmcDigiGetEmcDigi (Int_t i) const
const TEmcDigiGetEmcDigi (Int_t i) const
const TObjArray * GetEmcDigiCol () const
const TObjArray * GetEmcDigiCol () const
const Int_t GetEmcDigiNum () const
const Int_t GetEmcDigiNum () const
const TRecEmcShowerGetEmcShower (Int_t i, TDisTrack *recEvent) const
const TRecEmcShowerGetEmcShower (Int_t i, TDisTrack *recEvent) const
const TObjArray * GetEmcShowerCol (TDisTrack *recEvent) const
const TObjArray * GetEmcShowerCol (TDisTrack *recEvent) const
const Int_t GetEmcShowerNum (TDisTrack *recEvent) const
const Int_t GetEmcShowerNum (TDisTrack *recEvent) const
Long64_t GetEvent ()
Long64_t GetEvent ()
const TObjArray * GetExtTrackCol () const
const TObjArray * GetExtTrackCol () const
const Int_t GetExtTrackNum () const
const Int_t GetExtTrackNum () const
BesEventHeader GetHeader ()
BesEventHeader GetHeader ()
Int_t GetHour ()
Int_t GetHour ()
Int_t GetMC ()
Int_t GetMC ()
const TMdcDigiGetMdcDigi (Int_t i) const
const TMdcDigiGetMdcDigi (Int_t i) const
const TObjArray * GetMdcDigiCol () const
const TObjArray * GetMdcDigiCol () const
const Int_t GetMdcDigiNum () const
const Int_t GetMdcDigiNum () const
const TRecMdcTrackGetMdcTrack (Int_t i, TDisTrack *recEvent) const
const TRecMdcTrackGetMdcTrack (Int_t i, TDisTrack *recEvent) const
const TObjArray * GetMdcTrackCol (TDisTrack *recEvent) const
const TObjArray * GetMdcTrackCol (TDisTrack *recEvent) const
const Int_t GetMdcTrackNum (TDisTrack *recEvent) const
const Int_t GetMdcTrackNum (TDisTrack *recEvent) const
Int_t GetMin ()
Int_t GetMin ()
Int_t GetMonth ()
Int_t GetMonth ()
const TMucDigiGetMucDigi (Int_t i) const
const TMucDigiGetMucDigi (Int_t i) const
const TObjArray * GetMucDigiCol () const
const TObjArray * GetMucDigiCol () const
const Int_t GetMucDigiNum () const
const Int_t GetMucDigiNum () const
const TRecMucTrackGetMucTrack (Int_t i, TDisTrack *recEvent) const
const TRecMucTrackGetMucTrack (Int_t i, TDisTrack *recEvent) const
const TObjArray * GetMucTrackCol (TDisTrack *recEvent) const
const TObjArray * GetMucTrackCol (TDisTrack *recEvent) const
const Int_t GetMucTrackNum (TDisTrack *recEvent) const
const Int_t GetMucTrackNum (TDisTrack *recEvent) const
Long64_t GetRun ()
Long64_t GetRun ()
Int_t GetSec ()
Int_t GetSec ()
const TTofDigiGetTofDigi (Int_t i) const
const TTofDigiGetTofDigi (Int_t i) const
const TObjArray * GetTofDigiCol () const
const TObjArray * GetTofDigiCol () const
const Int_t GetTofDigiNum () const
const Int_t GetTofDigiNum () const
const TRecTofTrackGetTofTrack (Int_t i, TDisTrack *recEvent) const
const TRecTofTrackGetTofTrack (Int_t i, TDisTrack *recEvent) const
const TObjArray * GetTofTrackCol (TDisTrack *recEvent) const
const TObjArray * GetTofTrackCol (TDisTrack *recEvent) const
const Int_t GetTofTrackNum (TDisTrack *recEvent) const
const Int_t GetTofTrackNum (TDisTrack *recEvent) const
Int_t GetYear ()
Int_t GetYear ()
virtual void Print (Option_t *option="")
virtual void Print (Option_t *option="")
virtual void SetEmcShowers (TDisTrack *recEvent)
virtual void SetEmcShowers (TDisTrack *recEvent)
virtual void SetEvent (TDigiEvent *digiEvent, TDisTrack *recEvent, TEvtHeader *evtHeader)
virtual void SetEvent (TDigiEvent *digiEvent, TDisTrack *recEvent, TEvtHeader *evtHeader)
virtual void SetExtTracks (TDisTrack *recEvent)
virtual void SetExtTracks (TDisTrack *recEvent)
virtual void SetHits ()
virtual void SetHits ()
void SetMagnetic (Double_t input)
void SetMagnetic (Double_t input)
virtual void SetMdcTracks (TDisTrack *recEvent)
virtual void SetMdcTracks (TDisTrack *recEvent)
virtual void SetMucTracks (TDisTrack *recEvent)
virtual void SetMucTracks (TDisTrack *recEvent)
virtual void SetTofTracks (TDisTrack *recEvent)
virtual void SetTofTracks (TDisTrack *recEvent)
virtual void SetTracks (TDisTrack *recEvent)
virtual void SetTracks (TDisTrack *recEvent)
virtual ~BesEvent ()
virtual ~BesEvent ()

Private Member Functions

bool Is_tofBarrel (UInt_t status)
bool Is_tofBarrel (UInt_t status)
bool Is_tofCounter (UInt_t status)
bool Is_tofCounter (UInt_t status)

Private Attributes

Double_t f_Magnetic
TDigiEventfDigiEvent
TDigiEventfDigiEvent
TObjArray * fEmcTrackCol
TObjArray * fEmcTrackCol
BesEventHeader fEventHeader
TEvtHeaderfEvtHeader
TEvtHeaderfEvtHeader
TObjArray * fExtTrackCol
TObjArray * fExtTrackCol
TObjArray * fMdcTrackCol
TObjArray * fMdcTrackCol
TObjArray * fMucTrackCol
TObjArray * fMucTrackCol
TObjArray * fTofTrackCol
TObjArray * fTofTrackCol
TTrigEventfTrigEvent
TTrigEventfTrigEvent


Constructor & Destructor Documentation

BesEvent::BesEvent  ) 
 

BesEvent::~BesEvent  )  [virtual]
 

00047                     {
00048     //
00049     // BesEvent default destructor
00050 
00051     // Delete all array elements
00052     Delete();
00053 }

BesEvent::BesEvent  ) 
 

virtual BesEvent::~BesEvent  )  [virtual]
 


Member Function Documentation

virtual void BesEvent::Clear Option_t *  option = ""  )  [virtual]
 

void BesEvent::Clear Option_t *  option = ""  )  [virtual]
 

00102                                      {
00103     //
00104     // Clear event
00105     TString opt = option;
00106     opt.ToUpper();
00107 
00108     fDigiEvent->Clear("C");
00109 }

virtual void BesEvent::ConstructEmcTrackFromRec BesGeoTrack emcTrack,
const TRecEmcShower recTrack
[virtual]
 

void BesEvent::ConstructEmcTrackFromRec BesGeoTrack emcTrack,
const TRecEmcShower recTrack
[virtual]
 

00789                                                                                             {
00790 
00791     Double_t x=0.0, y=0.0, z=0.0;
00792     x = recTrack->x() * 10.0;
00793     y = recTrack->y() * 10.0;
00794     z = recTrack->z() * 10.0;
00795 
00796     emcTrack->SetMarker(x, y, z);
00797     // Add associated emc hits
00798     vector<Int_t> vecHits(0);
00799     map<Int_t, Double_t> cellMap = recTrack->cellIdMap();
00800     map<Int_t, Double_t>::iterator iCellMap;
00801     for (iCellMap = cellMap.begin(); iCellMap != cellMap.end(); iCellMap++){
00802         Int_t cellId = iCellMap->first;
00803         vecHits.push_back(cellId);
00804     }
00805     for (Int_t i = 0; i < (Int_t)vecHits.size(); i++) {
00806         Identifier aEmcID( vecHits[i] );
00807         int part  = EmcID::barrel_ec( aEmcID );
00808         int theta = EmcID::theta_module( aEmcID );
00809         int phi   = EmcID::phi_module( aEmcID );
00810         if (part == 1) theta = 43-theta; // 43 = m_kThetaBr-1
00811 
00812         Emc2DCrystal* aHit = gBesGeometry->GetEmcROOTGeo()->Get2DCrystal(part, phi, theta);
00813         emcTrack->AddHit( aHit );
00814     }
00815 
00816     // Add Emc track info
00817     char data[100];
00818     TString info;
00819 
00820     info = TString("EmcShower ");
00821     info += recTrack->trackId();
00822     emcTrack->AddInfo(info);
00823 
00824     sprintf(data, "nHits = %i, status = %i", recTrack->numHits(), recTrack->status());
00825     emcTrack->AddInfo( TString(data) );
00826 
00827     sprintf(data, "energy= (%.2f #pm %-.2f) MeV", recTrack->energy()*1000.0, recTrack->dE()*1000.0);
00828     emcTrack->AddInfo( TString(data) );
00829 
00830     Identifier aEmcID( recTrack->cellId() );
00831     int part  = EmcID::barrel_ec( aEmcID );
00832     int theta = EmcID::theta_module( aEmcID );
00833     int phi   = EmcID::phi_module( aEmcID );
00834 
00835     sprintf(data, "cell Id= (%i, #theta %i, #phi %i)", part, theta, phi);
00836     emcTrack->AddInfo( TString(data) );
00837 
00838     sprintf(data, "module = %i", recTrack->module());
00839     emcTrack->AddInfo( TString(data) );
00840 
00841     //sprintf(data, "x = (%-.3f #pm %-.3f) mm", x, recTrack->dx());
00842     //emcTrack->AddInfo( TString(data) );
00843 
00844     //sprintf(data, "y = (%-.3f #pm %-.3f) mm", y, recTrack->dy());
00845     //emcTrack->AddInfo( TString(data) );
00846 
00847     //sprintf(data, "z = (%-.3f #pm %-.3f) mm", z, recTrack->dz());
00848     //emcTrack->AddInfo( TString(data) );
00849 
00850     sprintf(data, "#theta = (%-.3f #pm %-.3f)", recTrack->theta(), recTrack->dtheta());
00851     emcTrack->AddInfo( TString(data) );
00852 
00853     sprintf(data, "#phi = (%-.3f #pm %-.3f)", recTrack->phi(), recTrack->dphi());
00854     emcTrack->AddInfo( TString(data) );
00855 
00856 //   sprintf(data, "cos (x=%-.3f, y=%-.3f, z=%-.3f)", recTrack->cosx(), recTrack->cosy(), recTrack->cosz());   //from boss6.1.0. no these varibles
00857 //   emcTrack->AddInfo( TString(data) );
00858 
00859     emcTrack->CloseInfo();
00860 }

virtual void BesEvent::ConstructMdcTrackFromRec BesGeoTrack mdcTrack,
const TRecMdcTrack recTrack,
TDisTrack recEvent
[virtual]
 

void BesEvent::ConstructMdcTrackFromRec BesGeoTrack mdcTrack,
const TRecMdcTrack recTrack,
TDisTrack recEvent
[virtual]
 

00339                                                                                                                 {
00340 
00341     Double_t field  = -f_Magnetic;   // Tesla
00342     Double_t kvC    = 3.0e8; // light speed
00343     Int_t    charge = recTrack->charge();
00344     Double_t pt     = recTrack->pxy(); // GeV
00345     Double_t pz     = recTrack->pz();  // GeV
00346     Double_t pi     = TMath::Pi();
00347 
00348     // unit is "cm", so * 10
00349     Double_t orgx = recTrack->x()*10;
00350     Double_t orgy = recTrack->y()*10;
00351     Double_t orgz = recTrack->z()*10;
00352 
00353 
00354     Double_t mdcR   = ((TGeoTube*)gBesGeometry->GetMdcROOTGeo()->GetVolumeMdc()->GetShape())->GetRmax();
00355     Double_t mdcZ   = ((TGeoTube*)gBesGeometry->GetMdcROOTGeo()->GetVolumeMdc()->GetShape())->GetDz();
00356 
00357     Double_t radius,zStep;
00358     if (charge == 0) {
00359         radius = 1e9 ;    // cosmic ray test
00360         zStep = 1e9;
00361     }
00362     else {
00363         radius = (pt * 1.0e9 / kvC * 1e3) / fabs(charge * field) ;
00364         zStep = 2*pi*radius * fabs(pz/pt);
00365     }
00366     Double_t curvature = 1.0/radius;
00367     Double_t step = 10.0; // mm
00368     Double_t delt = step*(1.0e-3)/kvC;
00369 
00370     mdcTrack->AddPoint(orgx, orgy, orgz, 0.0);
00371     const Double_t *p;
00372     Int_t nStep = 0;
00373 
00374     Double_t x,y,z,t;
00375     x = orgx;
00376     y = orgy;
00377     z = orgz;
00378 
00379     if (charge == 0){  //cosmic ray test
00380         do {
00381             x = recTrack->helix(0)* 10 *
00382                 cos(recTrack->helix(1))
00383                 - nStep * step * sin(recTrack->helix(1));
00384             y = recTrack->helix(0)* 10 *
00385                 sin(recTrack->helix(1))
00386                 + nStep * step * cos(recTrack->helix(1));
00387             z = recTrack->helix(3)* 10 +
00388                 nStep * step * recTrack->helix(4);
00389 
00390             mdcTrack->AddPoint(x, y, z, delt*nStep);
00391             Double_t mp[3];
00392             mp[0] = 0;
00393             mp[1] = 0;
00394             mp[2] = 0;
00395             mdcTrack->PaintMarker(mp);
00396             mdcTrack->SetMarkerColor(kBlack);
00397             mdcTrack->SetMarkerSize(10);
00398             mdcTrack->SetLineColor(kBlack);
00399 
00400             nStep++;
00401         }
00402         while ( (x*x + y*y) < mdcR*mdcR && fabs(z) < mdcZ );
00403 
00404         nStep = 0;
00405         do {
00406             x = recTrack->helix(0)* 10 *
00407                 cos(recTrack->helix(1))
00408                 - nStep * step * sin(recTrack->helix(1));
00409             y = recTrack->helix(0)* 10 *
00410                 sin(recTrack->helix(1))
00411                 + nStep * step * cos(recTrack->helix(1));
00412             z = recTrack->helix(3)* 10 +
00413                 nStep * step * recTrack->helix(4);
00414 
00415             mdcTrack->AddPoint(x, y, z, delt*nStep);
00416             Double_t mp[3];
00417             mp[0] = 0;
00418             mp[1] = 0;
00419             mp[2] = 0;
00420             mdcTrack->PaintMarker(mp);
00421             mdcTrack->SetMarkerColor(kBlack);
00422             mdcTrack->SetMarkerSize(10);
00423             mdcTrack->SetLineColor(kRed);
00424 
00425         }
00426         while ( (x*x + y*y) < mdcR*mdcR && fabs(z) < mdcZ );
00427     }
00428     else{    //normal track
00429         TGeoHelix helix(curvature, zStep, charge);
00430         helix.InitPoint(orgx, orgy, orgz);
00431 
00432         helix.InitDirection(recTrack->px(), recTrack->py(), recTrack->pz(), kFALSE);
00433         //helix.InitDirection(1000, 10, 10, kFALSE);
00434         helix.SetField(0.0, 0.0, field, kFALSE);
00435 
00436         do {
00437             // helix Step before GetCurrentPoint, or first point will be wrong
00438             helix.Step(step);
00439             p = helix.GetCurrentPoint();
00440 
00441             mdcTrack->AddPoint(p[0], p[1], p[2], delt*nStep);
00442             Double_t mp[3];
00443             mp[0] = p[0];
00444             mp[1] = p[1];
00445             mp[2] = p[2];
00446             mdcTrack->PaintMarker(mp);
00447             mdcTrack->SetMarkerColor(kBlack);
00448             mdcTrack->SetMarkerSize(10);
00449             nStep++;
00450         }
00451         while ( (p[0]*p[0] + p[1]*p[1]) < mdcR*mdcR && fabs(p[2]) < mdcZ );
00452 
00453     }
00454 
00455     // Add associated mdc hits
00456     vector<UInt_t> vecHits(0);
00457     const TObjArray *recMdcHitCol = fRecEvent->getRecMdcHitCol();
00458     for (Int_t i = 0; i < recMdcHitCol->GetEntriesFast(); i++){
00459         TRecMdcHit *recMdcHit = (TRecMdcHit*)recMdcHitCol->At(i);
00460         Int_t recHitId = recMdcHit->getTrkId();
00461         Int_t recTrkId = recTrack->trackId();
00462         if (recHitId == recTrkId) vecHits.push_back(recMdcHit->getMdcId());
00463     }
00464     for (Int_t i = 0; i < (Int_t)vecHits.size(); i++) {
00465         Identifier aMdcID( vecHits[i] );
00466         int layer = MdcID::layer( aMdcID );
00467         int wire  = MdcID::wire( aMdcID );
00468 
00469         Mdc2DWire* aHit = gBesGeometry->GetMdcROOTGeo()->Get2DWire(layer, wire);
00470         mdcTrack->AddHit( aHit );
00471     }
00472 
00473     mdcTrack->SetCharge(recTrack->charge());
00474 
00475     // Add mdc track info
00476     char data[100];
00477     TString info;
00478 
00479     info = TString("MdcTrack ");
00480     info += recTrack->trackId();
00481     mdcTrack->AddInfo( info );
00482 
00483     sprintf(data, "P = %-.3f GeV, Pt= %-.3f GeV", recTrack->p(), recTrack->pxy());
00484     mdcTrack->AddInfo( TString(data) );
00485 
00486     //sprintf(data, "Pt= %-.3f GeV", recTrack->pxy());
00487     //mdcTrack->AddInfo( TString(data) );
00488 
00489     sprintf(data, "Pz= %-.3f GeV", recTrack->pz());
00490     mdcTrack->AddInfo( TString(data) );
00491 
00492     sprintf(data, "charge= %i", recTrack->charge());
00493     mdcTrack->AddInfo( TString(data) );
00494 
00495     sprintf(data, "#phi %-.3f", recTrack->phi());
00496     mdcTrack->AddInfo( TString(data) );
00497 
00498     sprintf(data, "#theta %-.3f", recTrack->theta());
00499     mdcTrack->AddInfo( TString(data) );
00500 
00501     sprintf(data, "Origin (%-.3f, %-.3f, %-.3f) mm", orgx, orgy, orgz); //recTrack->x(), recTrack->y(), recTrack->z());
00502     mdcTrack->AddInfo( TString(data) );
00503 
00504     sprintf(data, "stat= %i,  #chi^{2}= %-.3f", recTrack->stat(), recTrack->chi2());
00505     mdcTrack->AddInfo( TString(data) );
00506 
00507     // sprintf(data, "ndof= %i, rms= %-.3f", recTrack->ndof(), recTrack->rms());
00508     // mdcTrack->AddInfo( TString(data) );
00509 
00510     // sprintf(data, "extrp= %-.3f, pathL= %-.3f", recTrack->extrp(), recTrack->pathLength());
00511     // mdcTrack->AddInfo( TString(data) );
00512 
00513     //sprintf(data, "nHits= %i, nSter= %i", recTrack->getNhits(), recTrack->nster());
00514     mdcTrack->AddInfo( TString(data) );
00515 
00516     mdcTrack->CloseInfo();
00517 }

virtual void BesEvent::ConstructMucTrackFromRec BesGeoTrack mucTrack,
const TRecMucTrack recTrack
[virtual]
 

void BesEvent::ConstructMucTrackFromRec BesGeoTrack mucTrack,
const TRecMucTrack recTrack
[virtual]
 

00864                                                                                            {
00865     if (recTrack->depth() <= 0.0) return;  // bad track
00866 
00867     Double_t field  = 1e-3;   // Tesla
00868     Double_t kvC    = 3.0e8; // light speed
00869     Int_t    charge = 1;
00870     Double_t pz     = recTrack->pz();  // GeV
00871     Double_t pt     =
00872         sqrt(recTrack->px()*recTrack->px() + recTrack->py()*recTrack->py()); // GeV
00873     Double_t pi     = TMath::Pi();
00874 
00875     Double_t mucR   =
00876         ((TGeoBBox*)gBesGeometry->GetMucROOTGeo()->GetVolumeMuc()->GetShape())->GetDX();
00877     Double_t mucZ   =
00878         ((TGeoBBox*)gBesGeometry->GetMucROOTGeo()->GetVolumeMuc()->GetShape())->GetDZ();
00879 
00880     Double_t radius = 1.0e+9;
00881     Double_t curvature = 1.0/radius;
00882     Double_t zStep = 2*pi*radius * fabs(pz/pt);
00883     Double_t step = 1.0; // mm
00884     Double_t delt = step*(1.0e-3)/kvC;
00885 
00886     TGeoHelix helix(curvature, zStep, charge);
00887 
00888     Double_t x = recTrack->xPos() * 10.0;
00889     Double_t y = recTrack->yPos() * 10.0;
00890     Double_t z = recTrack->zPos() * 10.0;
00891 
00892     helix.InitPoint(x, y, z);
00893     helix.InitDirection(recTrack->px(), recTrack->py(), recTrack->pz(), kFALSE);
00894     helix.SetField(0.0, 0.0, field, kFALSE);
00895 
00896     mucTrack->AddPoint(x, y, z, 0.0);
00897     const Double_t *p;
00898     Int_t nStep = 0;
00899     do {
00900         // helix Step before GetCurrentPoint, or first point will be wrong
00901         helix.Step(step);
00902         p = helix.GetCurrentPoint();
00903         mucTrack->AddPoint(p[0], p[1], p[2], delt*nStep);
00904         Double_t mp[3];
00905         mp[0] = p[0];
00906         mp[1] = p[1];
00907         mp[2] = p[2];
00908         mucTrack->PaintMarker(mp);
00909         mucTrack->SetMarkerColor(kBlack);
00910         mucTrack->SetMarkerSize(10);
00911         nStep++;
00912     }
00913     while ( (p[0]*p[0] + p[1]*p[1]) < mucR*mucR && fabs(p[2]) < mucZ );
00914 
00915     // Add associated muc hits
00916     vector<Int_t> vecHits = recTrack->vecHits();
00917     for (Int_t i = 0; i < (Int_t)vecHits.size(); i++) {
00918         Identifier aMucID( vecHits[i] );
00919         int part  = MucID::part(  aMucID );
00920         int seg   = MucID::seg(   aMucID );
00921         int gap   = MucID::gap(   aMucID );
00922         int strip = MucID::strip( aMucID );
00923 
00924         Muc2DStrip* aHit = gBesGeometry->GetMucROOTGeo()->Get2DStrip(part, seg, gap, strip);
00925         mucTrack->AddHit( aHit );
00926     }
00927 
00928     mucTrack->SetCharge(charge);
00929 
00930     // Add Muc track info
00931     char data[100];
00932     TString info;
00933 
00934     info = TString("MucTrack ");
00935     info += recTrack->trackId();
00936     mucTrack->AddInfo(info);
00937 
00938     sprintf(data, "nHits= %i, maxHits= %i, nLayers= %i", recTrack->numHits(), recTrack->maxHitsInLayer(), recTrack->numLayers());
00939     mucTrack->AddInfo( TString(data) );
00940 
00941     sprintf(data, "lastLayer (br= %i, ec= %i)", recTrack->brLastLayer(), recTrack->ecLastLayer());
00942     mucTrack->AddInfo( TString(data) );
00943 
00944     sprintf(data, "depth = %.3f cm", recTrack->depth());
00945     mucTrack->AddInfo( TString(data) );
00946 
00947     sprintf(data, "#chi^{2}= %-.3f, dof= %i, rms= %-.3f", recTrack->chi2(), recTrack->dof(), recTrack->rms());
00948     mucTrack->AddInfo( TString(data) );
00949 
00950     sprintf(data, "Origin (%-.2f, %-.2f, %-.2f) cm", recTrack->xPos(), recTrack->yPos(), recTrack->zPos());
00951     mucTrack->AddInfo( TString(data) );
00952 
00953     sprintf(data, "p (%-.3f, %-.3f, %-.3f) GeV", recTrack->px(), recTrack->py(), recTrack->pz());
00954     mucTrack->AddInfo( TString(data) );
00955 
00956     mucTrack->CloseInfo();
00957 }

virtual void BesEvent::ConstructTofTrackFromRec BesGeoTrack tofTrack,
const TRecTofTrack recTrack,
TDisTrack recEvent
[virtual]
 

void BesEvent::ConstructTofTrackFromRec BesGeoTrack tofTrack,
const TRecTofTrack recTrack,
TDisTrack recEvent
[virtual]
 

00639                                                              {
00640 
00641     vector<Int_t> vecBHits(0);
00642     vector<Int_t> vecEHits(0);
00643 
00644     const TObjArray *recTofTrackCol = fRecEvent->getTofTrackCol();
00645     for (Int_t i = 0; i < recTofTrackCol->GetEntriesFast(); i++){
00646         TRecTofTrack *recHit = (TRecTofTrack*)recTofTrackCol->At(i);
00647         if ( !Is_tofCounter( recHit->status())) continue;
00648 
00649         Int_t recHitId = recHit->trackID();
00650         Int_t recTrkId = recTrack->trackID();
00651         if (recHitId == recTrkId) {
00652             if ( Is_tofBarrel( recHit->status() ) ) {
00653                 vecBHits.push_back(recHit->tofID());
00654             }
00655             else {
00656                 vecEHits.push_back(recHit->tofID());
00657             }
00658         }
00659     }
00660 
00661     TGeoPhysicalNode *phyNode = 0;
00662     Double_t x=0.0, y=0.0, z=0.0;
00663 
00664     Int_t nHits;
00665     if (vecBHits.size()){
00666         nHits = vecBHits.size();
00667         for (Int_t i = 0; i < nHits; i++) {
00668 
00669             int part = 1;
00670             int layer = 0;
00671             int scin = 0;
00672             if ( ( vecBHits[i] >= 0 ) && ( vecBHits[i] <= 87 ) ) {
00673                 layer = 0;
00674                 scin  = vecBHits[i];
00675             }
00676             else {
00677                 layer = 1;
00678                 scin  = vecBHits[i] - 88;
00679             }
00680 
00681             Tof2DScin* aHit = gBesGeometry->GetTofROOTGeo()->Get2DScin(part, layer, scin);
00682             tofTrack->AddHit( aHit );
00683 
00684             // calculate average position
00685             Double_t local[3] = {0.0, 0.0, 0.0};
00686             Double_t master[3] = {0.0, 0.0, 0.0};
00687             phyNode = gBesGeometry->GetTofROOTGeo()->GetPhysicalScin(part, layer, scin);
00688             if (phyNode)
00689                 phyNode->GetMatrix(-1*phyNode->GetLevel())->LocalToMaster(local, &master[0]);
00690             // transform to top
00691             x += master[0];
00692             y += master[1];
00693             z += master[2];
00694         }
00695         x /= nHits;
00696         y /= nHits;
00697         z /= nHits;
00698 
00699         z = recTrack->zrhit();
00700 
00701         tofTrack->SetMarker(x, y, z);
00702     }
00703 
00704     else if (vecEHits.size()){
00705         nHits = vecEHits.size();
00706         for (Int_t i = 0; i < nHits; i++) {
00707 
00708             int part = 0;
00709             int layer = 0;
00710             int scin = 0;
00711             if ( ( vecEHits[i] >= 0 ) && ( vecEHits[i] <= 47 ) ) {
00712                 part = 2;
00713                 scin  = vecEHits[i];
00714             }
00715             else {
00716                 part = 0;
00717                 scin  = vecEHits[i] - 48;
00718             }
00719 
00720 
00721             Tof2DScin* aHit = gBesGeometry->GetTofROOTGeo()->Get2DScin(part, layer, scin);
00722             tofTrack->AddHit( aHit );
00723 
00724             // calculate average position
00725             Double_t local[3] = {0.0, 0.0, 0.0};
00726             Double_t master[3] = {0.0, 0.0, 0.0};
00727             phyNode = gBesGeometry->GetTofROOTGeo()->GetPhysicalScin(part, layer, scin);
00728             if (phyNode)
00729                 phyNode->GetMatrix(-1*phyNode->GetLevel())->LocalToMaster(local, &master[0]);
00730             // transform to top
00731             x += master[0];
00732             y += master[1];
00733             z += master[2];
00734         }
00735         x /= nHits;
00736         y /= nHits;
00737         z /= nHits;
00738 
00739         tofTrack->SetMarker(x, y, z);
00740     }
00741 
00742     // Add tof track info
00743     char data[100];
00744     TString info;
00745 
00746     info = TString("TofTrack ");
00747     info += recTrack->trackID();
00748     tofTrack->AddInfo(info);
00749 
00750     //sprintf(data, "Part = %i, Qual1 = %i, Qual2 = %i", recTrack->getPart(), recTrack->getQual1(), recTrack->getQual2());
00751     //tofTrack->AddInfo( TString(data) );
00752 
00753     //sprintf(data, "Tof   = (%-.3f #pm %-.3f) ns", recTrack->getTof(), recTrack->getETof());
00754     //tofTrack->AddInfo( TString(data) );
00755 
00756     //sprintf(data, "Tof1 = (%-.3f #pm %-.3f) ns", recTrack->getTof1(), recTrack->getETof1());
00757     //tofTrack->AddInfo( TString(data) );
00758 
00759     //sprintf(data, "Tof2 = (%-.3f #pm %-.3f) ns", recTrack->getTof2(), recTrack->getETof2());
00760     //tofTrack->AddInfo( TString(data) );
00761 
00762     //sprintf(data, "Path(1=%-.2f, 2=%-.2f) mm", recTrack->getPath1(), recTrack->getPath2());
00763     //tofTrack->AddInfo( TString(data) );
00764 
00765     //sprintf(data, "Pulse(1=%-.0f, 2=%-.0f)", recTrack->getPh1(), recTrack->getPh2());
00766     //tofTrack->AddInfo( TString(data) );
00767 
00768     //sprintf(data, "ZHit(1=%-.2fmm, 2=%-.2f)mm", recTrack->getZHit1(), recTrack->getZHit2());
00769     //tofTrack->AddInfo( TString(data) );
00770 
00773 
00774     //sprintf(data, "RHit = %-.3f, Beta = %-.3f", recTrack->getRHit(), recTrack->getBeta());
00775     //tofTrack->AddInfo( TString(data) );
00776 
00777     //sprintf(data, "w_e = %-.2f%%, w_mu = %-.2f%%", recTrack->getWeightElectron()*100.0, recTrack->getWeightMuon()*100.0);
00778     //tofTrack->AddInfo( TString(data) );
00779 
00780     //sprintf(data, "w_pi = %-.2f%%, w_K = %-.2f%%", recTrack->getWeightPion()*100.0, recTrack->getWeightKaon()*100.0);
00781     //tofTrack->AddInfo( TString(data) );
00782 
00783     //sprintf(data, "w_P = %-.2f%%", recTrack->getWeightProton()*100.0);
00784     //tofTrack->AddInfo( TString(data) );
00785 
00786     tofTrack->CloseInfo();
00787 }

virtual void BesEvent::Delete Option_t *  option = ""  )  [virtual]
 

void BesEvent::Delete Option_t *  option = ""  )  [virtual]
 

00057                                       {
00058     //
00059     // Clear event
00060     TString opt = option;
00061     opt.ToUpper();
00062 
00063     if (fMdcTrackCol) {
00064         for (int j = 0; j < fMdcTrackCol->GetEntries(); j++){
00065             delete      fMdcTrackCol->At(j);
00066         }
00067         fMdcTrackCol->Clear("C");
00068         delete fMdcTrackCol;
00069     }
00070     if (fTofTrackCol) {
00071         for (int j = 0; j < fTofTrackCol->GetEntries(); j++){
00072             delete      fTofTrackCol->At(j);
00073         }
00074         fTofTrackCol->Clear("C");
00075         delete fTofTrackCol;
00076     }
00077     if (fEmcTrackCol) {
00078         for (int j = 0; j < fEmcTrackCol->GetEntries(); j++){
00079             delete      fEmcTrackCol->At(j);
00080         }
00081         fEmcTrackCol->Clear("C");
00082         delete fEmcTrackCol;
00083     }
00084     if (fMucTrackCol) {
00085         for (int j = 0; j < fMucTrackCol->GetEntries(); j++){
00086             delete      fMucTrackCol->At(j);
00087         }
00088         fMucTrackCol->Clear("C");
00089         delete fMucTrackCol;
00090     }
00091     if (fExtTrackCol) {
00092         for (int j = 0; j < fExtTrackCol->GetEntries(); j++){
00093             delete      fExtTrackCol->At(j);
00094         }
00095         fExtTrackCol->Clear("C");
00096         delete fExtTrackCol;
00097     }
00098 }

virtual void BesEvent::DrawHits Option_t *  option  )  [virtual]
 

void BesEvent::DrawHits Option_t *  option  )  [virtual]
 

01026                                         {
01027     if (gBesGeometry) {
01028         gBesGeometry->GetMdcROOTGeo()->DrawHits(option);
01029         gBesGeometry->GetTofROOTGeo()->DrawHits(option);
01030         gBesGeometry->GetEmcROOTGeo()->DrawHits(option);
01031         gBesGeometry->GetMucROOTGeo()->DrawHits(option);
01032     }
01033 }

virtual void BesEvent::DrawTracks Option_t *  option  )  [virtual]
 

void BesEvent::DrawTracks Option_t *  option  )  [virtual]
 

01037                                           {
01038 
01039     BesView *view = (BesView*)gPad->GetView();
01040 
01041     if (view && view->GetVisTracksGlobal()) {
01042 
01043         if (view->GetVisTracksMdc()) {
01044             for (Int_t i = 0; i < fMdcTrackCol->GetEntries(); i++) {
01045                 BesGeoTrack *track = (BesGeoTrack*)fMdcTrackCol->At(i);
01046                 track->Draw();
01047             }
01048         }
01049 
01050         if (view->GetVisTracksTof()) {
01051             for (Int_t i = 0; i < fTofTrackCol->GetEntries(); i++) {
01052                 BesGeoTrack *track = (BesGeoTrack*)fTofTrackCol->At(i);
01053                 track->Draw();
01054             }
01055         }
01056 
01057         if (view->GetVisTracksEmc()) {
01058             for (Int_t i = 0; i < fEmcTrackCol->GetEntries(); i++) {
01059                 BesGeoTrack *track = (BesGeoTrack*)fEmcTrackCol->At(i);
01060                 track->Draw();
01061             }
01062         }
01063 
01064         if (view->GetVisTracksMuc()) {
01065             for (Int_t i = 0; i < fMucTrackCol->GetEntries(); i++) {
01066                 BesGeoTrack *track = (BesGeoTrack*)fMucTrackCol->At(i);
01067                 track->Draw();
01068             }
01069         }
01070 
01071         if (view->GetVisTracksExt()) {
01072             for (Int_t i = 0; i < fExtTrackCol->GetEntries(); i++) {
01073                 BesGeoTrack *track = (BesGeoTrack*)fExtTrackCol->At(i);
01074                 track->Draw();
01075             }
01076         }
01077     }
01078 }

Int_t BesEvent::GetDay  )  [inline]
 

00255                             {
00256         return fEventHeader.GetEventDay();
00257     }

Int_t BesEvent::GetDay  )  [inline]
 

00255                             {
00256         return fEventHeader.GetEventDay();
00257     }

const TRecMdcDedx* BesEvent::GetDedx Int_t  i  )  const [inline]
 

00235                                                         {
00236        // if (fRecEvent)
00237        //     return fRecEvent->getRecMdcDedx(i);
00238       //  else
00239           return 0;
00240     };

const TRecMdcDedx* BesEvent::GetDedx Int_t  i  )  const [inline]
 

00235                                                         {
00236        // if (fRecEvent)
00237        //     return fRecEvent->getRecMdcDedx(i);
00238       //  else
00239           return 0;
00240     };

const TObjArray* BesEvent::GetDedxCol TDisTrack recEvent  )  const [inline]
 

00151                                                                      {
00152      //   if (recEvent)
00153       //      return recEvent->getRecMdcDedxCol();
00154       //  else 
00155           return 0;
00156     };

const TObjArray* BesEvent::GetDedxCol TDisTrack recEvent  )  const [inline]
 

00151                                                                      {
00152      //   if (recEvent)
00153       //      return recEvent->getRecMdcDedxCol();
00154       //  else 
00155           return 0;
00156     };

const Int_t BesEvent::GetDedxNum TDisTrack recEvent  )  const [inline]
 

00196                                                                      {
00197       //  if (fRecEvent)
00198       //      return fRecEvent->getRecMdcDedxCol()->GetEntries();
00199        // else 
00200           return -1;
00201     };

const Int_t BesEvent::GetDedxNum TDisTrack recEvent  )  const [inline]
 

00196                                                                      {
00197       //  if (fRecEvent)
00198       //      return fRecEvent->getRecMdcDedxCol()->GetEntries();
00199        // else 
00200           return -1;
00201     };

const TEmcDigi* BesEvent::GetEmcDigi Int_t  i  )  const [inline]
 

00108                                                 {
00109         if (fDigiEvent) return fDigiEvent->getEmcDigi(i);
00110         else return 0;
00111     };

const TEmcDigi* BesEvent::GetEmcDigi Int_t  i  )  const [inline]
 

00108                                                 {
00109         if (fDigiEvent) return fDigiEvent->getEmcDigi(i);
00110         else return 0;
00111     };

const TObjArray* BesEvent::GetEmcDigiCol  )  const [inline]
 

00076                                                 {
00077         if (fDigiEvent) return fDigiEvent->getEmcDigiCol();
00078         else return 0;
00079     };

const TObjArray* BesEvent::GetEmcDigiCol  )  const [inline]
 

00076                                                 {
00077         if (fDigiEvent) return fDigiEvent->getEmcDigiCol();
00078         else return 0;
00079     };

const Int_t BesEvent::GetEmcDigiNum  )  const [inline]
 

00092                                                 {
00093         if (fDigiEvent) return fDigiEvent->getEmcDigiCol()->GetEntries();
00094         else return -1;
00095     };

const Int_t BesEvent::GetEmcDigiNum  )  const [inline]
 

00092                                                 {
00093         if (fDigiEvent) return fDigiEvent->getEmcDigiCol()->GetEntries();
00094         else return -1;
00095     };

const TRecEmcShower* BesEvent::GetEmcShower Int_t  i,
TDisTrack recEvent
const [inline]
 

00218                                                                            {
00219         if (recEvent)
00220             return recEvent->getEmcShower(i);
00221         else 
00222           return 0;
00223     };

const TRecEmcShower* BesEvent::GetEmcShower Int_t  i,
TDisTrack recEvent
const [inline]
 

00218                                                                            {
00219         if (recEvent)
00220             return recEvent->getEmcShower(i);
00221         else 
00222           return 0;
00223     };

const TObjArray* BesEvent::GetEmcShowerCol TDisTrack recEvent  )  const [inline]
 

00133                                                                       {
00134       //  if (recEvent)
00135       //      return recEvent->getEmcShowerCol();
00136       //  else 
00137           return 0;
00138     };

const TObjArray* BesEvent::GetEmcShowerCol TDisTrack recEvent  )  const [inline]
 

00133                                                                       {
00134       //  if (recEvent)
00135       //      return recEvent->getEmcShowerCol();
00136       //  else 
00137           return 0;
00138     };

const Int_t BesEvent::GetEmcShowerNum TDisTrack recEvent  )  const [inline]
 

00176                                                                       {
00177       if (recEvent)
00178    //     return recEvent->getEmcShowerCol()->GetEntries();
00179      return recEvent->getEmcShowerNum(); 
00180        else 
00181           return -1;
00182     };

const Int_t BesEvent::GetEmcShowerNum TDisTrack recEvent  )  const [inline]
 

00176                                                                       {
00177       if (recEvent)
00178    //     return recEvent->getEmcShowerCol()->GetEntries();
00179      return recEvent->getEmcShowerNum(); 
00180        else 
00181           return -1;
00182     };

Long64_t BesEvent::GetEvent  )  [inline]
 

00246                                {
00247         return fEventHeader.GetEventNumber();
00248     }

Long64_t BesEvent::GetEvent  )  [inline]
 

00246                                {
00247         return fEventHeader.GetEventNumber();
00248     }

const TObjArray* BesEvent::GetExtTrackCol  )  const [inline]
 

00145                                                   {
00146          return 0;      // for test 
00147         //if (fRecEvent)
00148         //    return fRecEvent->getExtTrackCol();
00149         //else return 0;
00150     };

const TObjArray* BesEvent::GetExtTrackCol  )  const [inline]
 

00145                                                   {
00146          return 0;      // for test 
00147         //if (fRecEvent)
00148         //    return fRecEvent->getExtTrackCol();
00149         //else return 0;
00150     };

const Int_t BesEvent::GetExtTrackNum  )  const [inline]
 

00190                                                   {
00191         return -1;// for test 
00192         //if (fRecEvent)
00193         //    return fRecEvent->getExtTrackCol()->GetEntries();
00194         //else return -1;
00195     };

const Int_t BesEvent::GetExtTrackNum  )  const [inline]
 

00190                                                   {
00191         return -1;// for test 
00192         //if (fRecEvent)
00193         //    return fRecEvent->getExtTrackCol()->GetEntries();
00194         //else return -1;
00195     };

BesEventHeader BesEvent::GetHeader  )  [inline]
 

00271                                      {
00272         return fEventHeader;
00273     }

BesEventHeader BesEvent::GetHeader  )  [inline]
 

00271                                      {
00272         return fEventHeader;
00273     }

Int_t BesEvent::GetHour  )  [inline]
 

00258                             {
00259         return fEventHeader.GetEventHour();
00260     }

Int_t BesEvent::GetHour  )  [inline]
 

00258                             {
00259         return fEventHeader.GetEventHour();
00260     }

Int_t BesEvent::GetMC  )  [inline]
 

00267                             {
00268         return fEventHeader.GetEventMC();
00269     }

Int_t BesEvent::GetMC  )  [inline]
 

00267                             {
00268         return fEventHeader.GetEventMC();
00269     }

const TMdcDigi* BesEvent::GetMdcDigi Int_t  i  )  const [inline]
 

00100                                                 {
00101         if (fDigiEvent) return fDigiEvent->getMdcDigi(i);
00102         else return 0;
00103     };

const TMdcDigi* BesEvent::GetMdcDigi Int_t  i  )  const [inline]
 

00100                                                 {
00101         if (fDigiEvent) return fDigiEvent->getMdcDigi(i);
00102         else return 0;
00103     };

const TObjArray* BesEvent::GetMdcDigiCol  )  const [inline]
 

00068                                                 {
00069         if (fDigiEvent) return fDigiEvent->getMdcDigiCol();
00070         else return 0;
00071     };

const TObjArray* BesEvent::GetMdcDigiCol  )  const [inline]
 

00068                                                 {
00069         if (fDigiEvent) return fDigiEvent->getMdcDigiCol();
00070         else return 0;
00071     };

const Int_t BesEvent::GetMdcDigiNum  )  const [inline]
 

00084                                                 {
00085         if (fDigiEvent) return fDigiEvent->getMdcDigiCol()->GetEntries();
00086         else return -1;
00087     };

const Int_t BesEvent::GetMdcDigiNum  )  const [inline]
 

00084                                                 {
00085         if (fDigiEvent) return fDigiEvent->getMdcDigiCol()->GetEntries();
00086         else return -1;
00087     };

const TRecMdcTrack* BesEvent::GetMdcTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00202                                                                          {
00203         if (recEvent)
00204             return recEvent->getRecMdcTrack(i);
00205         else return 0;
00206     };

const TRecMdcTrack* BesEvent::GetMdcTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00202                                                                          {
00203         if (recEvent)
00204             return recEvent->getRecMdcTrack(i);
00205         else return 0;
00206     };

const TObjArray* BesEvent::GetMdcTrackCol TDisTrack recEvent  )  const [inline]
 

00117                                                                      {
00118         if (recEvent)
00119             return recEvent->getRecMdcTrackCol();
00120         else return 0;
00121     };

const TObjArray* BesEvent::GetMdcTrackCol TDisTrack recEvent  )  const [inline]
 

00117                                                                      {
00118         if (recEvent)
00119             return recEvent->getRecMdcTrackCol();
00120         else return 0;
00121     };

const Int_t BesEvent::GetMdcTrackNum TDisTrack recEvent  )  const [inline]
 

00157                                                                      {
00158        if (recEvent)
00159 //            return recEvent->getRecMdcTrackCol()->GetEntries();
00160        return recEvent->getMdcTrackNum();
00161      else 
00162           return -1;
00163     };

const Int_t BesEvent::GetMdcTrackNum TDisTrack recEvent  )  const [inline]
 

00157                                                                      {
00158        if (recEvent)
00159 //            return recEvent->getRecMdcTrackCol()->GetEntries();
00160        return recEvent->getMdcTrackNum();
00161      else 
00162           return -1;
00163     };

Int_t BesEvent::GetMin  )  [inline]
 

00261                             {
00262         return fEventHeader.GetEventMin();
00263     }

Int_t BesEvent::GetMin  )  [inline]
 

00261                             {
00262         return fEventHeader.GetEventMin();
00263     }

Int_t BesEvent::GetMonth  )  [inline]
 

00252                             {
00253         return fEventHeader.GetEventMonth();
00254     }

Int_t BesEvent::GetMonth  )  [inline]
 

00252                             {
00253         return fEventHeader.GetEventMonth();
00254     }

const TMucDigi* BesEvent::GetMucDigi Int_t  i  )  const [inline]
 

00112                                                 {
00113         if (fDigiEvent) return fDigiEvent->getMucDigi(i);
00114         else return 0;
00115     };

const TMucDigi* BesEvent::GetMucDigi Int_t  i  )  const [inline]
 

00112                                                 {
00113         if (fDigiEvent) return fDigiEvent->getMucDigi(i);
00114         else return 0;
00115     };

const TObjArray* BesEvent::GetMucDigiCol  )  const [inline]
 

00080                                                 {
00081         if (fDigiEvent) return fDigiEvent->getMucDigiCol();
00082         else return 0;
00083     };

const TObjArray* BesEvent::GetMucDigiCol  )  const [inline]
 

00080                                                 {
00081         if (fDigiEvent) return fDigiEvent->getMucDigiCol();
00082         else return 0;
00083     };

const Int_t BesEvent::GetMucDigiNum  )  const [inline]
 

00096                                                 {
00097         if (fDigiEvent) return fDigiEvent->getMucDigiCol()->GetEntries();
00098         else return -1;
00099     };

const Int_t BesEvent::GetMucDigiNum  )  const [inline]
 

00096                                                 {
00097         if (fDigiEvent) return fDigiEvent->getMucDigiCol()->GetEntries();
00098         else return -1;
00099     };

const TRecMucTrack* BesEvent::GetMucTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00224                                                                          {
00225         if (recEvent)
00226            return recEvent->getMucTrack(i);
00227         else 
00228           return 0;
00229     };

const TRecMucTrack* BesEvent::GetMucTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00224                                                                          {
00225         if (recEvent)
00226            return recEvent->getMucTrack(i);
00227         else 
00228           return 0;
00229     };

const TObjArray* BesEvent::GetMucTrackCol TDisTrack recEvent  )  const [inline]
 

00139                                                                      {
00140         if (recEvent)
00141             return recEvent->getMucTrackCol();
00142         else 
00143         return 0;
00144     };

const TObjArray* BesEvent::GetMucTrackCol TDisTrack recEvent  )  const [inline]
 

00139                                                                      {
00140         if (recEvent)
00141             return recEvent->getMucTrackCol();
00142         else 
00143         return 0;
00144     };

const Int_t BesEvent::GetMucTrackNum TDisTrack recEvent  )  const [inline]
 

00183                                                                      {
00184         if (recEvent)
00185          return recEvent->getMucTrackNum();
00186      //       return recEvent->getMucTrackCol()->GetEntries();
00187         else 
00188           return -1;
00189     };

const Int_t BesEvent::GetMucTrackNum TDisTrack recEvent  )  const [inline]
 

00183                                                                      {
00184         if (recEvent)
00185          return recEvent->getMucTrackNum();
00186      //       return recEvent->getMucTrackCol()->GetEntries();
00187         else 
00188           return -1;
00189     };

Long64_t BesEvent::GetRun  )  [inline]
 

00243                                {
00244         return fEventHeader.GetRunNumber();
00245     }

Long64_t BesEvent::GetRun  )  [inline]
 

00243                                {
00244         return fEventHeader.GetRunNumber();
00245     }

Int_t BesEvent::GetSec  )  [inline]
 

00264                             {
00265         return fEventHeader.GetEventSec();
00266     }

Int_t BesEvent::GetSec  )  [inline]
 

00264                             {
00265         return fEventHeader.GetEventSec();
00266     }

const TTofDigi* BesEvent::GetTofDigi Int_t  i  )  const [inline]
 

00104                                                 {
00105         if (fDigiEvent) return fDigiEvent->getTofDigi(i);
00106         else return 0;
00107     };

const TTofDigi* BesEvent::GetTofDigi Int_t  i  )  const [inline]
 

00104                                                 {
00105         if (fDigiEvent) return fDigiEvent->getTofDigi(i);
00106         else return 0;
00107     };

const TObjArray* BesEvent::GetTofDigiCol  )  const [inline]
 

00072                                                 {
00073         if (fDigiEvent) return fDigiEvent->getTofDigiCol();
00074         else return 0;
00075     };

const TObjArray* BesEvent::GetTofDigiCol  )  const [inline]
 

00072                                                 {
00073         if (fDigiEvent) return fDigiEvent->getTofDigiCol();
00074         else return 0;
00075     };

const Int_t BesEvent::GetTofDigiNum  )  const [inline]
 

00088                                                 {
00089         if (fDigiEvent) return fDigiEvent->getTofDigiCol()->GetEntries();
00090         else return -1;
00091     };

const Int_t BesEvent::GetTofDigiNum  )  const [inline]
 

00088                                                 {
00089         if (fDigiEvent) return fDigiEvent->getTofDigiCol()->GetEntries();
00090         else return -1;
00091     };

const TRecTofTrack* BesEvent::GetTofTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00212                                                                          {
00213         if (recEvent)
00214             return recEvent->getTofTrack(i);
00215         else
00216           return 0;
00217     };

const TRecTofTrack* BesEvent::GetTofTrack Int_t  i,
TDisTrack recEvent
const [inline]
 

00212                                                                          {
00213         if (recEvent)
00214             return recEvent->getTofTrack(i);
00215         else
00216           return 0;
00217     };

const TObjArray* BesEvent::GetTofTrackCol TDisTrack recEvent  )  const [inline]
 

00127                                                                      {
00128         if (recEvent)
00129             return recEvent->getTofTrackCol();
00130         else 
00131           return 0;
00132     };

const TObjArray* BesEvent::GetTofTrackCol TDisTrack recEvent  )  const [inline]
 

00127                                                                      {
00128         if (recEvent)
00129             return recEvent->getTofTrackCol();
00130         else 
00131           return 0;
00132     };

const Int_t BesEvent::GetTofTrackNum TDisTrack recEvent  )  const [inline]
 

00169                                                                      {
00170         if (recEvent)
00171    //         return recEvent->getTofTrackCol()->GetEntries();
00172        return recEvent->getTofTrackNum();
00173         else 
00174           return -1;
00175     };

const Int_t BesEvent::GetTofTrackNum TDisTrack recEvent  )  const [inline]
 

00169                                                                      {
00170         if (recEvent)
00171    //         return recEvent->getTofTrackCol()->GetEntries();
00172        return recEvent->getTofTrackNum();
00173         else 
00174           return -1;
00175     };

Int_t BesEvent::GetYear  )  [inline]
 

00249                             {
00250         return fEventHeader.GetEventYear();
00251     }

Int_t BesEvent::GetYear  )  [inline]
 

00249                             {
00250         return fEventHeader.GetEventYear();
00251     }

bool BesEvent::Is_tofBarrel UInt_t  status  )  [private]
 

bool BesEvent::Is_tofBarrel UInt_t  status  )  [private]
 

01141                                          {
01142     const unsigned int Barrel_Index  = 4;
01143     const unsigned int Barrel_Mask   = 0x00000010;
01144     return ((status & Barrel_Mask) >> Barrel_Index ) ? true : false;
01145 }

bool BesEvent::Is_tofCounter UInt_t  status  )  [private]
 

bool BesEvent::Is_tofCounter UInt_t  status  )  [private]
 

01135                                          {
01136     const unsigned int  Counter_Mask = 0x00000004;
01137     const unsigned int  Counter_Index = 2;
01138     return ((status & Counter_Mask) >> Counter_Index) ? true: false;
01139 }

virtual void BesEvent::Print Option_t *  option = ""  )  [virtual]
 

void BesEvent::Print Option_t *  option = ""  )  [virtual]
 

01082                                      {
01083     //
01084     // Print event information
01085     //
01086     // Options available:
01087     //   ''               - quiet, i.e. only numbers of hits and tracks etc. (default)
01088     //   'ALL'            - very detailed output (might be hundreds of lines!)
01089     //   'Digi'           - only Digi information
01090     //   'Dst'            - only Dst information
01091     //
01092     TString opt = option;
01093     opt.ToUpper();
01094     Int_t i;
01095 
01096     //cout << endl
01097     // << "==========================================================" << endl
01098     // << "Run:                            " << GetRun() << endl
01099     // << "Event:                          " << GetEvent() << endl
01100     // << "----------------------------------------------------------" << endl
01101     // << "Mdc digis:                      " << GetMdcDigiNum() << endl
01102     // << "Tof digis:                      " << GetTofDigiNum() << endl
01103     // << "Emc digis:                      " << GetEmcDigiNum() << endl
01104     // << "Muc digis:                      " << GetMucDigiNum() << endl
01105     // << "Mdc tracks:                     " << GetMdcTrackNum() << endl
01106     // << "Tof tracks:                     " << "debug++++++" /*GetTofTrackNum()*/ << endl
01107     // << "Emc tracks:                     " << GetEmcShowerNum() << endl
01108     // << "Muc tracks:                     " << GetMucTrackNum() << endl
01109     // << "Ext tracks:                     " << GetExtTrackNum() << endl
01110     // << "Dedx :                          " << GetDedxNum() << endl
01111     // << "----------------------------------------------------------" << endl;
01112 
01113     if ( opt.Contains("ALL") || opt.Contains("Digi") ) {
01114         for ( i = 0; i < GetMdcDigiNum(); i++ ) GetMdcDigi(i)->Print();
01115         for ( i = 0; i < GetTofDigiNum(); i++ ) GetTofDigi(i)->Print();
01116         for ( i = 0; i < GetEmcDigiNum(); i++ ) GetEmcDigi(i)->Print();
01117         for ( i = 0; i < GetMucDigiNum(); i++ ) GetMucDigi(i)->Print();
01118     }
01119 
01120     /* if ( opt.Contains("ALL") || opt.Contains("Dst") ) {
01121          for ( i = 0; i < GetMdcTrackNum(); i++ ) GetMdcTrack(i)->Print();
01122          // Tof -> BTof ETof
01123          //for ( i = 0; i < GetTofTrackNum(); i++ ) GetTofTrack(i)->Print();
01124          for ( i = 0; i < GetEmcShowerNum(); i++ ) GetEmcShower(i)->Print();
01125          for ( i = 0; i < GetMucTrackNum(); i++ ) GetMucTrack(i)->Print();
01126          cout << "wait for TRecExtEvent, BesEvent" << endl;
01127          //for ( i = 0; i < GetExtTrackNum(); i++ ) GetExtTrack(i)->Print();
01128          for ( i = 0; i < GetDedxNum();     i++ ) GetDedx(i)->Print();
01129      }
01130     */
01131     //cout << "=========================================================="
01132     //<< endl << endl;
01133 }

virtual void BesEvent::SetEmcShowers TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetEmcShowers TDisTrack recEvent  )  [virtual]
 

00283                                                 {
00284     if (fEmcTrackCol) {
00285         for (int j = 0; j < fEmcTrackCol->GetEntries(); j++){
00286             delete      fEmcTrackCol->At(j);
00287         }
00288       fEmcTrackCol->Clear("C");
00289     }
00290     int emc_no = recEvent->getEmcShowerNum();
00291 
00292     for (Int_t i = 0; i < emc_no; i++) {
00293         const TRecEmcShower* recShower =recEvent->getEmcShower(i);
00294         BesGeoTrack *emcTrack = new BesGeoTrack();
00295         emcTrack->SetTrackType(2);
00296 
00297         ConstructEmcTrackFromRec(emcTrack, recShower);
00298         fEmcTrackCol->Add(emcTrack);
00299     }
00300 }

virtual void BesEvent::SetEvent TDigiEvent digiEvent,
TDisTrack recEvent,
TEvtHeader evtHeader
[virtual]
 

void BesEvent::SetEvent TDigiEvent digiEvent,
TDisTrack recEvent,
TEvtHeader evtHeader
[virtual]
 

00113                                                                                          {
00114 //void BesEvent::SetEvent(TDigiEvent *digiEvent, TDisTrack *recEvent, TEvtHeader *evtHeader, TTrigEvent * trigEvt) {
00115     //fDigiEvent = 0;
00116     std::cout << "setEvent" << std::endl;
00117     fDigiEvent = digiEvent;
00118     fEvtHeader = evtHeader;
00119     //fTrigEvent = trigEvt;
00120     fTrigEvent = 0;
00121 // ======================================== 
00122 // set trig information
00123 // ======================================== 
00124     if (fTrigEvent != 0){
00125       vector<Int_t> trigConditionVector;
00126       vector<Int_t> trigChannelVector;
00127 
00128       const TTrigData* trigData = fTrigEvent->getTrigData();
00129       const Int_t timeType = trigData->getTimingType();
00130       //std::cout << "BesEvent::timing type: " << timeType << std::endl;
00131       Int_t trigCondition;
00132       Int_t trigChannel;
00133       for (Int_t i = 0; i < 48; i++){
00134         trigCondition = trigData->getTrigCondition(i);
00135         if (trigCondition) trigConditionVector.push_back(i);
00136         //std::cout << "BesEvent::trig condition: " << trigCondition << std::endl;
00137       }
00138       for (Int_t i = 0; i < 16; i++){
00139         trigChannel = trigData->getTrigChannel(i);
00140         if (trigChannel) trigChannelVector.push_back(i);
00141         //std::cout << "BesEvent::trigChannel: " << trigChannel << std::endl;
00142       }
00143       fEventHeader.SetEventTrig(timeType, trigConditionVector, trigChannelVector);
00144     }
00145     else {
00146       std::cout << "fTrigEvent does not exit!" << std::endl;
00147     }
00148 // ======================================== 
00149 // set time information
00150 // ======================================== 
00151     if (fEvtHeader != 0){
00152         time_t now;
00153         //now = time(NULL);
00154         now = (time_t)evtHeader->time();
00155         //char str_time[256];
00156         //sprintf(str_time, ctime(&now));
00157         //cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
00158         //cout << "time now: " << str_time << endl;
00159         //cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
00160 
00161         struct tm *local_time;
00162         local_time = localtime(&now);
00163         //cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
00164         //cout << "time now sec: " << local_time->tm_sec << endl;
00165         //cout << "time now min: " << local_time->tm_min << endl;
00166         //cout << "time now hour: "<< local_time->tm_hour << endl;
00167         //cout << "time now day: " << local_time->tm_mday << endl;
00168         //cout << "time now mon: " << local_time->tm_mon << endl;
00169         //cout << "time now year: "<< local_time->tm_year << endl;
00170         //cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
00171 
00172         Int_t time1 = (1900 + local_time->tm_year) * 10000 + (1 + local_time->tm_mon) * 100
00173                       + local_time->tm_mday;
00174         Int_t time2 = local_time->tm_hour * 10000 + local_time->tm_min * 100
00175                       + local_time->tm_sec;
00176 
00177         fEventHeader.SetEventHeaderGeneral(fEvtHeader->getRunId(),
00178                                            fEvtHeader->getEventId(), time1, time2);
00179     }
00180     else {
00181         cout << "fEvtHeader does not exit" << endl;
00182     }
00183 
00184 // ======================================== 
00185 // set Mdc information
00186 // ======================================== 
00187     Double_t p = 0.0, pt = 0.0, px = 0.0, py = 0.0, pz = 0.0;
00188     for (Int_t i = 0; i < GetMdcTrackNum(recEvent); i++) {
00189         p  += GetMdcTrack(i,recEvent)->p();
00190         pt += GetMdcTrack(i,recEvent)->pxy();
00191         px += GetMdcTrack(i,recEvent)->px();
00192         py += GetMdcTrack(i,recEvent)->py();
00193         pz += GetMdcTrack(i,recEvent)->pz();
00194     }
00195     fEventHeader.SetEventMdc(p, pt, px, py, pz);
00196 
00197 // ======================================== 
00198 // set Emc information
00199 // ======================================== 
00200     Double_t t = 9999.0;
00201     Double_t e = 0.0;
00202     for (Int_t i = 0; i < GetEmcShowerNum(recEvent); i++) {
00203         e += GetEmcShower(i,recEvent)->energy();
00204     }
00205     fEventHeader.SetEventEmc(e);
00206 // ======================================== 
00207 // set digi and rec 
00208 // ======================================== 
00209     if (fDigiEvent != 0){
00210         SetHits();
00211         fEventHeader.SetEventMC(fDigiEvent->getFromMc());
00212     }
00213     if (recEvent != 0)
00214         SetTracks(recEvent);
00215 
00216 }

virtual void BesEvent::SetExtTracks TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetExtTracks TDisTrack recEvent  )  [virtual]
 

00324                                                {
00325     //if (fExtTrackCol) fExtTrackCol->Clear("C");
00326 
00327     //for (Int_t i = 0; i < GetExtTrackNum(); i++) {
00328     //    const TExtTrack* recTrack = GetExtTrack(i);
00329     //    BesGeoTrack *extTrack = new BesGeoTrack();
00330     //    extTrack->SetTrackType(4);
00331 
00332     //    ConstructExtTrackFromRec(extTrack, recTrack);
00333     //    fExtTrackCol->Add(extTrack);
00334     //}
00335 }

virtual void BesEvent::SetHits  )  [virtual]
 

void BesEvent::SetHits  )  [virtual]
 

00220                        {
00221     if (gBesGeometry) {
00222         gBesGeometry->GetMdcROOTGeo()->SetHits();
00223         gBesGeometry->GetTofROOTGeo()->SetHits();
00224         gBesGeometry->GetEmcROOTGeo()->SetHits();
00225         gBesGeometry->GetMucROOTGeo()->SetHits();
00226     }
00227 }

void BesEvent::SetMagnetic Double_t  input  )  [inline]
 

00067 {f_Magnetic = input;};

void BesEvent::SetMagnetic Double_t  input  )  [inline]
 

00067 {f_Magnetic = input;};

virtual void BesEvent::SetMdcTracks TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetMdcTracks TDisTrack recEvent  )  [virtual]
 

00241                                                {
00242     if (fMdcTrackCol){
00243         for (int j = 0; j < fMdcTrackCol->GetEntries(); j++){
00244             delete      fMdcTrackCol->At(j);
00245         }
00246         fMdcTrackCol->Clear("C");
00247     }
00248     int mdc_no = recEvent->getMdcTrackNum();
00249     for (Int_t i = 0; i < mdc_no; i++) {
00250         const TRecMdcTrack* recTrack =recEvent->getRecMdcTrack(i);
00251         BesGeoTrack *mdcTrack = new BesGeoTrack();
00252         mdcTrack->SetTrackType(0);
00253 
00254         ConstructMdcTrackFromRec(mdcTrack, recTrack,recEvent);
00255         fMdcTrackCol->Add(mdcTrack);
00256     }
00257 }

virtual void BesEvent::SetMucTracks TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetMucTracks TDisTrack recEvent  )  [virtual]
 

00304                                                {
00305     if (fMucTrackCol) {
00306         for (int j = 0; j < fMucTrackCol->GetEntries(); j++){
00307             delete      fMucTrackCol->At(j);
00308         }
00309       fMucTrackCol->Clear("C");
00310     }
00311     int muc_no = recEvent->getMucTrackNum();
00312     for (Int_t i = 0; i < muc_no; i++) {
00313         const TRecMucTrack* recTrack =recEvent->getMucTrack(i);
00314         BesGeoTrack *mucTrack = new BesGeoTrack();
00315         mucTrack->SetTrackType(3);
00316 
00317         ConstructMucTrackFromRec(mucTrack, recTrack);
00318         fMucTrackCol->Add(mucTrack);
00319     }
00320 }

virtual void BesEvent::SetTofTracks TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetTofTracks TDisTrack recEvent  )  [virtual]
 

00261                                                {
00262     if (fTofTrackCol) {
00263         for (int j = 0; j < fTofTrackCol->GetEntries(); j++){
00264             delete      fTofTrackCol->At(j);
00265         }
00266       fTofTrackCol->Clear("C");
00267     }
00268     int tof_no = recEvent->getTofTrackNum();
00269 
00270     for (Int_t i = 0; i < tof_no; i++) {
00271         const TRecTofTrack* recTrack = recEvent->getTofTrack(i);
00272         if ( !Is_tofCounter( recTrack->status())) continue;
00273         BesGeoTrack *tofTrack = new BesGeoTrack();
00274         tofTrack->SetTrackType(1);
00275 
00276         ConstructTofTrackFromRec(tofTrack, recTrack,recEvent);
00277         fTofTrackCol->Add(tofTrack);
00278     }
00279 }

virtual void BesEvent::SetTracks TDisTrack recEvent  )  [virtual]
 

void BesEvent::SetTracks TDisTrack recEvent  )  [virtual]
 

00231                                             {
00232     SetMdcTracks(recEvent);
00233     SetTofTracks(recEvent);
00234     SetEmcShowers(recEvent);
00235     SetMucTracks(recEvent);
00236     SetExtTracks(recEvent);
00237 }


Member Data Documentation

Double_t BesEvent::f_Magnetic [private]
 

TDigiEvent* BesEvent::fDigiEvent [private]
 

TDigiEvent* BesEvent::fDigiEvent [private]
 

TObjArray* BesEvent::fEmcTrackCol [private]
 

TObjArray* BesEvent::fEmcTrackCol [private]
 

BesEventHeader BesEvent::fEventHeader [private]
 

TEvtHeader* BesEvent::fEvtHeader [private]
 

TEvtHeader* BesEvent::fEvtHeader [private]
 

TObjArray* BesEvent::fExtTrackCol [private]
 

TObjArray* BesEvent::fExtTrackCol [private]
 

TObjArray* BesEvent::fMdcTrackCol [private]
 

TObjArray* BesEvent::fMdcTrackCol [private]
 

TObjArray* BesEvent::fMucTrackCol [private]
 

TObjArray* BesEvent::fMucTrackCol [private]
 

TObjArray* BesEvent::fTofTrackCol [private]
 

TObjArray* BesEvent::fTofTrackCol [private]
 

TTrigEvent* BesEvent::fTrigEvent [private]
 

TTrigEvent* BesEvent::fTrigEvent [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:52:26 2011 for BOSS6.5.5 by  doxygen 1.3.9.1