BesEvent Class Reference

#include <BesEvent.h>

List of all members.

Public Member Functions

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

Private Member Functions

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

Private Attributes

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


Detailed Description

Definition at line 23 of file BesEvent.h.


Constructor & Destructor Documentation

BesEvent::BesEvent (  ) 

BesEvent::~BesEvent (  )  [virtual]

Definition at line 47 of file BesEvent.cxx.

References Delete().

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


Member Function Documentation

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

Definition at line 102 of file BesEvent.cxx.

References TDigiEvent::Clear(), and fDigiEvent.

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

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

Definition at line 797 of file BesEvent.cxx.

References BesGeoTrack::AddHit(), BesGeoTrack::AddInfo(), EmcID::barrel_ec(), TRecEmcShower::cellId(), TRecEmcShower::cellIdMap(), BesGeoTrack::CloseInfo(), TRecEmcShower::dE(), TRecEmcShower::dphi(), TRecEmcShower::dtheta(), TRecEmcShower::energy(), gBesGeometry, EmcROOTGeo::Get2DCrystal(), BesGeometry::GetEmcROOTGeo(), genRecEmupikp::i, TRecEmcShower::module(), TRecEmcShower::numHits(), TRecEmcShower::phi(), EmcID::phi_module(), BesGeoTrack::SetMarker(), TRecEmcShower::status(), TRecEmcShower::theta(), EmcID::theta_module(), TRecEmcShower::trackId(), TRecEmcShower::x(), x, TRecEmcShower::y(), and TRecEmcShower::z().

Referenced by SetEmcShowers().

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

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

Definition at line 346 of file BesEvent.cxx.

References BesGeoTrack::AddHit(), BesGeoTrack::AddInfo(), BesGeoTrack::AddPoint(), TRecMdcTrack::charge(), TRecMdcTrack::chi2(), BesGeoTrack::CloseInfo(), cos(), f_Magnetic, gBesGeometry, MdcROOTGeo::Get2DWire(), BesGeometry::GetMdcROOTGeo(), TDisTrack::getRecMdcHitCol(), MdcROOTGeo::GetVolumeMdc(), TRecMdcTrack::helix(), genRecEmupikp::i, kvC, MdcID::layer(), mp, TRecMdcTrack::ndof(), TRecMdcTrack::p(), TRecMdcTrack::phi(), pi, TRecMdcTrack::px(), TRecMdcTrack::pxy(), TRecMdcTrack::py(), TRecMdcTrack::pz(), BesGeoTrack::SetCharge(), sin(), TRecMdcTrack::stat(), t(), TRecMdcTrack::theta(), TRecMdcTrack::trackId(), MdcID::wire(), x, TRecMdcTrack::x(), TRecMdcTrack::y(), and TRecMdcTrack::z().

Referenced by SetMdcTracks().

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

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

Definition at line 872 of file BesEvent.cxx.

References BesGeoTrack::AddHit(), BesGeoTrack::AddInfo(), BesGeoTrack::AddPoint(), TRecMucTrack::brLastLayer(), TRecMucTrack::chi2(), BesGeoTrack::CloseInfo(), TRecMucTrack::depth(), TRecMucTrack::dof(), TRecMucTrack::ecLastLayer(), MucID::gap(), gBesGeometry, MucROOTGeo::Get2DStrip(), BesGeometry::GetMucROOTGeo(), MucROOTGeo::GetVolumeMuc(), genRecEmupikp::i, kvC, TRecMucTrack::maxHitsInLayer(), mp, TRecMucTrack::numHits(), TRecMucTrack::numLayers(), MucID::part(), pi, TRecMucTrack::px(), TRecMucTrack::py(), TRecMucTrack::pz(), TRecMucTrack::rms(), MucID::seg(), BesGeoTrack::SetCharge(), MucID::strip(), TRecMucTrack::trackId(), TRecMucTrack::vecHits(), x, TRecMucTrack::xPos(), TRecMucTrack::yPos(), and TRecMucTrack::zPos().

Referenced by SetMucTracks().

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

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

Definition at line 645 of file BesEvent.cxx.

References BesGeoTrack::AddHit(), BesGeoTrack::AddInfo(), BesGeoTrack::CloseInfo(), gBesGeometry, TofROOTGeo::Get2DScin(), TofROOTGeo::GetPhysicalScin(), BesGeometry::GetTofROOTGeo(), TDisTrack::getTofTrackCol(), genRecEmupikp::i, Is_tofBarrel(), Is_tofCounter(), BesGeoTrack::SetMarker(), TRecTofTrack::trackID(), x, and TRecTofTrack::zrhit().

Referenced by SetTofTracks().

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

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

Definition at line 57 of file BesEvent.cxx.

References fEmcTrackCol, fExtTrackCol, fMdcTrackCol, fMucTrackCol, fTofTrackCol, and ganga-rec::j.

Referenced by ~BesEvent().

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 }

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

Definition at line 1034 of file BesEvent.cxx.

References MucROOTGeo::DrawHits(), EmcROOTGeo::DrawHits(), TofROOTGeo::DrawHits(), MdcROOTGeo::DrawHits(), gBesGeometry, BesGeometry::GetEmcROOTGeo(), BesGeometry::GetMdcROOTGeo(), BesGeometry::GetMucROOTGeo(), and BesGeometry::GetTofROOTGeo().

Referenced by BesView::SetViewType().

01034                                         {
01035     if (gBesGeometry) {
01036         gBesGeometry->GetMdcROOTGeo()->DrawHits(option);
01037         gBesGeometry->GetTofROOTGeo()->DrawHits(option);
01038         gBesGeometry->GetEmcROOTGeo()->DrawHits(option);
01039         gBesGeometry->GetMucROOTGeo()->DrawHits(option);
01040     }
01041 }

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

Definition at line 1045 of file BesEvent.cxx.

References fEmcTrackCol, fExtTrackCol, fMdcTrackCol, fMucTrackCol, fTofTrackCol, BesView::GetVisTracksEmc(), BesView::GetVisTracksExt(), BesView::GetVisTracksGlobal(), BesView::GetVisTracksMdc(), BesView::GetVisTracksMuc(), BesView::GetVisTracksTof(), and genRecEmupikp::i.

Referenced by BesView::SetViewType().

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

Int_t BesEvent::GetDay (  )  [inline]

Definition at line 256 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventDay().

Referenced by BesVisDisplay::DrawHeader().

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

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

Definition at line 236 of file BesEvent.h.

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

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

Definition at line 152 of file BesEvent.h.

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

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

Definition at line 197 of file BesEvent.h.

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

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

Definition at line 110 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getEmcDigi().

Referenced by Print().

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

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

Definition at line 78 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getEmcDigiCol().

Referenced by EmcROOTGeo::SetHits().

00078                                                 {
00079         if (fDigiEvent) return fDigiEvent->getEmcDigiCol();
00080         else return 0;
00081     };

const Int_t BesEvent::GetEmcDigiNum (  )  const [inline]

Definition at line 94 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getEmcDigiCol().

Referenced by Print().

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

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

Definition at line 219 of file BesEvent.h.

References TDisTrack::getEmcShower().

Referenced by SetEvent().

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

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

Definition at line 134 of file BesEvent.h.

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

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

Definition at line 177 of file BesEvent.h.

References TDisTrack::getEmcShowerNum().

Referenced by SetEvent().

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

Long64_t BesEvent::GetEvent (  )  [inline]

Definition at line 247 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventNumber().

Referenced by BesVisDisplay::DrawHeader().

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

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

Definition at line 146 of file BesEvent.h.

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

const Int_t BesEvent::GetExtTrackNum (  )  const [inline]

Definition at line 191 of file BesEvent.h.

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

BesEventHeader BesEvent::GetHeader (  )  [inline]

Definition at line 271 of file BesEvent.h.

References fEventHeader.

Referenced by BesVisDisplay::DrawHeader(), and MdcROOTGeo::SetHits().

00271                                      {
00272         return fEventHeader;
00273     }

Int_t BesEvent::GetHour (  )  [inline]

Definition at line 259 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventHour().

Referenced by BesVisDisplay::DrawHeader().

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

Int_t BesEvent::GetMC (  )  [inline]

Definition at line 268 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventMC().

Referenced by BesVisDisplay::DrawHeader().

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

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

Definition at line 102 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMdcDigi().

Referenced by Print().

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

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

Definition at line 70 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMdcDigiCol().

Referenced by MdcROOTGeo::SetHits().

00070                                                 {
00071         if (fDigiEvent) return fDigiEvent->getMdcDigiCol();
00072         else return 0;
00073     };

const Int_t BesEvent::GetMdcDigiNum (  )  const [inline]

Definition at line 86 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMdcDigiCol().

Referenced by Print().

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

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

Definition at line 203 of file BesEvent.h.

References TDisTrack::getRecMdcTrack().

Referenced by SetEvent().

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

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

Definition at line 118 of file BesEvent.h.

References TDisTrack::getRecMdcTrackCol().

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

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

Definition at line 158 of file BesEvent.h.

References TDisTrack::getMdcTrackNum().

Referenced by SetEvent().

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

Int_t BesEvent::GetMin (  )  [inline]

Definition at line 262 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventMin().

Referenced by BesVisDisplay::DrawHeader().

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

Int_t BesEvent::GetMonth (  )  [inline]

Definition at line 253 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventMonth().

Referenced by BesVisDisplay::DrawHeader().

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

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

Definition at line 114 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMucDigi().

Referenced by Print().

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

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

Definition at line 82 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMucDigiCol().

Referenced by MucROOTGeo::SetHits().

00082                                                 {
00083         if (fDigiEvent) return fDigiEvent->getMucDigiCol();
00084         else return 0;
00085     };

const Int_t BesEvent::GetMucDigiNum (  )  const [inline]

Definition at line 98 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getMucDigiCol().

Referenced by Print().

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

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

Definition at line 225 of file BesEvent.h.

References TDisTrack::getMucTrack().

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

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

Definition at line 140 of file BesEvent.h.

References TDisTrack::getMucTrackCol().

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

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

Definition at line 184 of file BesEvent.h.

References TDisTrack::getMucTrackNum().

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

Long64_t BesEvent::GetRun (  )  [inline]

Definition at line 244 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetRunNumber().

Referenced by BesVisDisplay::DrawHeader().

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

Int_t BesEvent::GetSec (  )  [inline]

Definition at line 265 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventSec().

Referenced by BesVisDisplay::DrawHeader().

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

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

Definition at line 106 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getTofDigi().

Referenced by Print().

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

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

Definition at line 74 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getTofDigiCol().

Referenced by TofROOTGeo::SetHits().

00074                                                 {
00075         if (fDigiEvent) return fDigiEvent->getTofDigiCol();
00076         else return 0;
00077     };

const Int_t BesEvent::GetTofDigiNum (  )  const [inline]

Definition at line 90 of file BesEvent.h.

References fDigiEvent, and TDigiEvent::getTofDigiCol().

Referenced by Print().

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

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

Definition at line 213 of file BesEvent.h.

References TDisTrack::getTofTrack().

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

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

Definition at line 128 of file BesEvent.h.

References TDisTrack::getTofTrackCol().

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

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

Definition at line 170 of file BesEvent.h.

References TDisTrack::getTofTrackNum().

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

Int_t BesEvent::GetYear (  )  [inline]

Definition at line 250 of file BesEvent.h.

References fEventHeader, and BesEventHeader::GetEventYear().

Referenced by BesVisDisplay::DrawHeader().

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

bool BesEvent::Is_tofBarrel ( UInt_t  status  )  [private]

Definition at line 1149 of file BesEvent.cxx.

Referenced by ConstructTofTrackFromRec().

01149                                          {
01150     const unsigned int Barrel_Index  = 4;
01151     const unsigned int Barrel_Mask   = 0x00000010;
01152     return ((status & Barrel_Mask) >> Barrel_Index ) ? true : false;
01153 }

bool BesEvent::Is_tofCounter ( UInt_t  status  )  [private]

Definition at line 1143 of file BesEvent.cxx.

Referenced by ConstructTofTrackFromRec(), and SetTofTracks().

01143                                          {
01144     const unsigned int  Counter_Mask = 0x00000004;
01145     const unsigned int  Counter_Index = 2;
01146     return ((status & Counter_Mask) >> Counter_Index) ? true: false;
01147 }

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

Definition at line 1090 of file BesEvent.cxx.

References GetEmcDigi(), GetEmcDigiNum(), GetMdcDigi(), GetMdcDigiNum(), GetMucDigi(), GetMucDigiNum(), GetTofDigi(), GetTofDigiNum(), genRecEmupikp::i, and TRawData::Print().

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

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

Definition at line 290 of file BesEvent.cxx.

References ConstructEmcTrackFromRec(), fEmcTrackCol, TDisTrack::getEmcShower(), TDisTrack::getEmcShowerNum(), genRecEmupikp::i, ganga-rec::j, and BesGeoTrack::SetTrackType().

Referenced by SetTracks().

00290                                                 {
00291     if (fEmcTrackCol) {
00292         for (int j = 0; j < fEmcTrackCol->GetEntries(); j++){
00293             delete      fEmcTrackCol->At(j);
00294         }
00295       fEmcTrackCol->Clear("C");
00296     }
00297     int emc_no = recEvent->getEmcShowerNum();
00298 
00299     for (Int_t i = 0; i < emc_no; i++) {
00300         const TRecEmcShower* recShower =recEvent->getEmcShower(i);
00301         BesGeoTrack *emcTrack = new BesGeoTrack();
00302         emcTrack->SetTrackType(2);
00303 
00304         ConstructEmcTrackFromRec(emcTrack, recShower);
00305         fEmcTrackCol->Add(emcTrack);
00306     }
00307 }

void BesEvent::SetEvent ( TDigiEvent digiEvent,
TDisTrack recEvent,
TEvtHeader evtHeader,
TRecEvTime recEvTime 
) [virtual]

Definition at line 113 of file BesEvent.cxx.

References TRecEmcShower::energy(), TRecEvTime::estime(), fDigiEvent, fEventHeader, fEvtHeader, fRecEvTime, fTrigEvent, GetEmcShower(), GetEmcShowerNum(), TEvtHeader::getEventId(), TDigiEvent::getFromMc(), GetMdcTrack(), GetMdcTrackNum(), TEvtHeader::getRunId(), TTrigData::getTimingType(), TTrigData::getTrigChannel(), TTrigData::getTrigCondition(), TTrigEvent::getTrigData(), genRecEmupikp::i, TRecMdcTrack::p(), TRecMdcTrack::px(), TRecMdcTrack::pxy(), TRecMdcTrack::py(), TRecMdcTrack::pz(), TRecEvTime::quality(), BesEventHeader::SetEventEmc(), BesEventHeader::SetEventEvTime(), BesEventHeader::SetEventHeaderGeneral(), BesEventHeader::SetEventMC(), BesEventHeader::SetEventMdc(), BesEventHeader::SetEventTrig(), SetHits(), SetTracks(), TRecEvTime::status(), t(), and TEvtHeader::time().

Referenced by BesClient::GetEvent().

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

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

Definition at line 331 of file BesEvent.cxx.

Referenced by SetTracks().

00331                                                {
00332     //if (fExtTrackCol) fExtTrackCol->Clear("C");
00333 
00334     //for (Int_t i = 0; i < GetExtTrackNum(); i++) {
00335     //    const TExtTrack* recTrack = GetExtTrack(i);
00336     //    BesGeoTrack *extTrack = new BesGeoTrack();
00337     //    extTrack->SetTrackType(4);
00338 
00339     //    ConstructExtTrackFromRec(extTrack, recTrack);
00340     //    fExtTrackCol->Add(extTrack);
00341     //}
00342 }

void BesEvent::SetHits (  )  [virtual]

Definition at line 227 of file BesEvent.cxx.

References gBesGeometry, BesGeometry::GetEmcROOTGeo(), BesGeometry::GetMdcROOTGeo(), BesGeometry::GetMucROOTGeo(), BesGeometry::GetTofROOTGeo(), MucROOTGeo::SetHits(), EmcROOTGeo::SetHits(), TofROOTGeo::SetHits(), and MdcROOTGeo::SetHits().

Referenced by SetEvent().

00227                        {
00228     if (gBesGeometry) {
00229         gBesGeometry->GetMdcROOTGeo()->SetHits();
00230         gBesGeometry->GetTofROOTGeo()->SetHits();
00231         gBesGeometry->GetEmcROOTGeo()->SetHits();
00232         gBesGeometry->GetMucROOTGeo()->SetHits();
00233     }
00234 }

void BesEvent::SetMagnetic ( Double_t  input  )  [inline]

Definition at line 69 of file BesEvent.h.

References f_Magnetic.

00069 {f_Magnetic = input;};

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

Definition at line 248 of file BesEvent.cxx.

References ConstructMdcTrackFromRec(), fMdcTrackCol, TDisTrack::getMdcTrackNum(), TDisTrack::getRecMdcTrack(), genRecEmupikp::i, ganga-rec::j, and BesGeoTrack::SetTrackType().

Referenced by SetTracks().

00248                                                {
00249     if (fMdcTrackCol){
00250         for (int j = 0; j < fMdcTrackCol->GetEntries(); j++){
00251             delete      fMdcTrackCol->At(j);
00252         }
00253         fMdcTrackCol->Clear("C");
00254     }
00255     int mdc_no = recEvent->getMdcTrackNum();
00256     for (Int_t i = 0; i < mdc_no; i++) {
00257         const TRecMdcTrack* recTrack =recEvent->getRecMdcTrack(i);
00258         BesGeoTrack *mdcTrack = new BesGeoTrack();
00259         mdcTrack->SetTrackType(0);
00260 
00261         ConstructMdcTrackFromRec(mdcTrack, recTrack,recEvent);
00262         fMdcTrackCol->Add(mdcTrack);
00263     }
00264 }

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

Definition at line 311 of file BesEvent.cxx.

References ConstructMucTrackFromRec(), fMucTrackCol, TDisTrack::getMucTrack(), TDisTrack::getMucTrackNum(), genRecEmupikp::i, ganga-rec::j, and BesGeoTrack::SetTrackType().

Referenced by SetTracks().

00311                                                {
00312     if (fMucTrackCol) {
00313         for (int j = 0; j < fMucTrackCol->GetEntries(); j++){
00314             delete      fMucTrackCol->At(j);
00315         }
00316       fMucTrackCol->Clear("C");
00317     }
00318     int muc_no = recEvent->getMucTrackNum();
00319     for (Int_t i = 0; i < muc_no; i++) {
00320         const TRecMucTrack* recTrack =recEvent->getMucTrack(i);
00321         BesGeoTrack *mucTrack = new BesGeoTrack();
00322         mucTrack->SetTrackType(3);
00323 
00324         ConstructMucTrackFromRec(mucTrack, recTrack);
00325         fMucTrackCol->Add(mucTrack);
00326     }
00327 }

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

Definition at line 268 of file BesEvent.cxx.

References ConstructTofTrackFromRec(), fTofTrackCol, TDisTrack::getTofTrack(), TDisTrack::getTofTrackNum(), genRecEmupikp::i, Is_tofCounter(), ganga-rec::j, and BesGeoTrack::SetTrackType().

Referenced by SetTracks().

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

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

Definition at line 238 of file BesEvent.cxx.

References SetEmcShowers(), SetExtTracks(), SetMdcTracks(), SetMucTracks(), and SetTofTracks().

Referenced by SetEvent().

00238                                             {
00239     SetMdcTracks(recEvent);
00240     SetTofTracks(recEvent);
00241     SetEmcShowers(recEvent);
00242     SetMucTracks(recEvent);
00243     SetExtTracks(recEvent);
00244 }


Member Data Documentation

Double_t BesEvent::f_Magnetic [private]

Definition at line 26 of file BesEvent.h.

Referenced by ConstructMdcTrackFromRec(), and SetMagnetic().

TDigiEvent* BesEvent::fDigiEvent [private]

Definition at line 28 of file BesEvent.h.

Referenced by Clear(), GetEmcDigi(), GetEmcDigiCol(), GetEmcDigiNum(), GetMdcDigi(), GetMdcDigiCol(), GetMdcDigiNum(), GetMucDigi(), GetMucDigiCol(), GetMucDigiNum(), GetTofDigi(), GetTofDigiCol(), GetTofDigiNum(), and SetEvent().

TObjArray* BesEvent::fEmcTrackCol [private]

Definition at line 35 of file BesEvent.h.

Referenced by Delete(), DrawTracks(), and SetEmcShowers().

BesEventHeader BesEvent::fEventHeader [private]

Definition at line 27 of file BesEvent.h.

Referenced by GetDay(), GetEvent(), GetHeader(), GetHour(), GetMC(), GetMin(), GetMonth(), GetRun(), GetSec(), GetYear(), and SetEvent().

TEvtHeader* BesEvent::fEvtHeader [private]

Definition at line 29 of file BesEvent.h.

Referenced by SetEvent().

TObjArray* BesEvent::fExtTrackCol [private]

Definition at line 37 of file BesEvent.h.

Referenced by Delete(), and DrawTracks().

TObjArray* BesEvent::fMdcTrackCol [private]

Definition at line 33 of file BesEvent.h.

Referenced by Delete(), DrawTracks(), and SetMdcTracks().

TObjArray* BesEvent::fMucTrackCol [private]

Definition at line 36 of file BesEvent.h.

Referenced by Delete(), DrawTracks(), and SetMucTracks().

TRecEvTime* BesEvent::fRecEvTime [private]

Definition at line 31 of file BesEvent.h.

Referenced by SetEvent().

TObjArray* BesEvent::fTofTrackCol [private]

Definition at line 34 of file BesEvent.h.

Referenced by Delete(), DrawTracks(), and SetTofTracks().

TTrigEvent* BesEvent::fTrigEvent [private]

Definition at line 30 of file BesEvent.h.

Referenced by SetEvent().


Generated on Tue Nov 29 23:17:31 2016 for BOSS_7.0.2 by  doxygen 1.4.7