#include <BesEvent.h>
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 TMdcDigi * | GetMdcDigi (Int_t i) const |
const TTofDigi * | GetTofDigi (Int_t i) const |
const TEmcDigi * | GetEmcDigi (Int_t i) const |
const TMucDigi * | GetMucDigi (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 TRecMdcTrack * | GetMdcTrack (Int_t i, TDisTrack *recEvent) const |
const TRecTofTrack * | GetTofTrack (Int_t i, TDisTrack *recEvent) const |
const TRecEmcShower * | GetEmcShower (Int_t i, TDisTrack *recEvent) const |
const TRecMucTrack * | GetMucTrack (Int_t i, TDisTrack *recEvent) const |
const TRecMdcDedx * | GetDedx (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 |
TDigiEvent * | fDigiEvent |
TEvtHeader * | fEvtHeader |
TTrigEvent * | fTrigEvent |
TRecEvTime * | fRecEvTime |
TObjArray * | fMdcTrackCol |
TObjArray * | fTofTrackCol |
TObjArray * | fEmcTrackCol |
TObjArray * | fMucTrackCol |
TObjArray * | fExtTrackCol |
Definition at line 23 of file BesEvent.h.
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 }
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] |
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 }
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] |
TObjArray* BesEvent::fExtTrackCol [private] |
TObjArray* BesEvent::fMdcTrackCol [private] |
TObjArray* BesEvent::fMucTrackCol [private] |
TRecEvTime* BesEvent::fRecEvTime [private] |
TObjArray* BesEvent::fTofTrackCol [private] |
TTrigEvent* BesEvent::fTrigEvent [private] |