BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Pi0EtaToGGRecAlg Class Reference

#include <Pi0EtaToGGRecAlg.h>

Inheritance diagram for Pi0EtaToGGRecAlg:

Public Member Functions

 Pi0EtaToGGRecAlg (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Detailed Description

Definition at line 16 of file Pi0EtaToGGRecAlg.h.

Constructor & Destructor Documentation

◆ Pi0EtaToGGRecAlg()

Pi0EtaToGGRecAlg::Pi0EtaToGGRecAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Individual photons

Definition at line 15 of file misc/Pi0EtaToGGRecAlg.cxx.

16 : Algorithm( name, pSvcLocator ) {
17 // Declare the properties
18 declareProperty( "Pi0MinMass", m_minmass_cut = 0.07 );
19 declareProperty( "Pi0MaxMass", m_maxmass_cut = 0.18 );
20 declareProperty( "Pi0ChisqCut", m_chisq_cut = 20.0 );
21
22 /// Individual photons
23 declareProperty( "PhotonUseBarrelEmc", m_useBarrel = true );
24 declareProperty( "PhotonUseEndcapEmc", m_useEndcap = true );
25 declareProperty( "PhotonMinEnergy", m_minEnergy = 0.02 );
26 declareProperty( "PhotonDeltaAngleCut", m_angled_cut = 20.0 );
27 declareProperty( "PhotonDeltaThetaCut", m_thed_cut = 20.0 );
28 declareProperty( "PhotonDeltaPhiCut", m_phid_cut = 20.0 );
29}

Member Function Documentation

◆ execute()

StatusCode Pi0EtaToGGRecAlg::execute ( )

Perform pi0 1C kinfit

Fill number of pi0s in EvtRecEvent

Definition at line 41 of file misc/Pi0EtaToGGRecAlg.cxx.

41 {
42
43 MsgStream log( msgSvc(), name() );
44 log << MSG::INFO << "in execute()" << endmsg;
45
46 // get event header, eventlist and tracklist from TDS
47 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
48 SmartDataPtr<EvtRecEvent> recEvt( eventSvc(), EventModel::EvtRec::EvtRecEvent );
49 SmartDataPtr<EvtRecTrackCol> recTrkCol( eventSvc(), EventModel::EvtRec::EvtRecTrackCol );
50
51 bool save2TDS = false;
52 SmartDataPtr<EvtRecPi0Col> recPi0Col( eventSvc(), EventModel::EvtRec::EvtRecPi0Col );
53 if ( !recPi0Col )
54 {
55 recPi0Col = new EvtRecPi0Col;
56 save2TDS = true;
57 }
58
59 KinematicFit* kmfit = KinematicFit::instance();
60
61 //
62 // Set up the pi0's list
63 //
64 for ( int i1 = recEvt->totalCharged(); i1 < ( recEvt->totalTracks() - 1 ); i1++ )
65 {
66 EvtRecTrack* g1Trk = *( recTrkCol->begin() + i1 );
67 if ( !validPhoton( g1Trk, recEvt, recTrkCol ) ) continue;
68 RecEmcShower* g1Shower = g1Trk->emcShower();
69 HepLorentzVector g1P4 = getP4( g1Shower );
70
71 for ( int i2 = i1 + 1; i2 < recEvt->totalTracks(); i2++ )
72 {
73 EvtRecTrack* g2Trk = *( recTrkCol->begin() + i2 );
74 if ( !validPhoton( g2Trk, recEvt, recTrkCol ) ) continue;
75 RecEmcShower* g2Shower = g2Trk->emcShower();
76 HepLorentzVector g2P4 = getP4( g2Shower );
77
78 HepLorentzVector p2g = g1P4 + g2P4;
79 if ( p2g.m() < m_minmass_cut ) continue;
80 if ( p2g.m() > m_maxmass_cut ) continue;
81
82 /// Perform pi0 1C kinfit
83 kmfit->init();
84 kmfit->setIterNumber( 1 );
85 kmfit->AddTrack( 0, 0.0, g1Shower );
86 kmfit->AddTrack( 1, 0.0, g2Shower );
87 kmfit->AddResonance( 0, xmpi0, 0, 1 );
88 if ( !kmfit->Fit( 0 ) ) continue;
89 kmfit->BuildVirtualParticle( 0 );
90
91 double pi0_chisq = kmfit->chisq( 0 );
92 if ( pi0_chisq > m_chisq_cut ) continue;
93
94 double e1 = ( kmfit->pfit( 0 ) ).e();
95 double e2 = ( kmfit->pfit( 1 ) ).e();
96 HepLorentzVector ppi0 = kmfit->pfit( 0 ) + kmfit->pfit( 1 );
97
98 EvtRecPi0* recPi0 = new EvtRecPi0();
99 recPi0->setRawMass( p2g.restMass() );
100 recPi0->setChisq( pi0_chisq );
101 recPi0->setFcos( ( e1 - e2 ) / ppi0.rho() );
102
103 if ( g1P4.e() >= g2P4.e() )
104 {
105 recPi0->setHiPfit( kmfit->pfit( 0 ) );
106 recPi0->setLoPfit( kmfit->pfit( 1 ) );
107 recPi0->setHiEnGamma( g1Trk );
108 recPi0->setLoEnGamma( g2Trk );
109 }
110 else
111 {
112 recPi0->setHiPfit( kmfit->pfit( 1 ) );
113 recPi0->setLoPfit( kmfit->pfit( 0 ) );
114 recPi0->setHiEnGamma( g2Trk );
115 recPi0->setLoEnGamma( g1Trk );
116 }
117
118 std::cout << "p(g1) = " << g1P4 << std::endl;
119 std::cout << "p(g2) = " << g2P4 << std::endl;
120 std::cout << "chi2(pi0) = " << pi0_chisq << std::endl;
121 std::cout << "m(gg) before fill = " << p2g.restMass() << std::endl << std::endl;
122
123 recPi0Col->push_back( recPi0 );
124 }
125 }
126
127 /// Fill number of pi0s in EvtRecEvent
128 recEvt->setNumberOfPi0( recPi0Col->size() );
129
130 if ( save2TDS )
131 {
132 StatusCode sc = eventSvc()->registerObject( EventModel::EvtRec::EvtRecPi0Col, recPi0Col );
133 if ( sc.isFailure() )
134 {
135 log << MSG::ERROR << "could not register EvtRecPi0Col in TDS" << endmsg;
136 return StatusCode::FAILURE;
137 }
138 }
139
140 return StatusCode::SUCCESS;
141}
Double_t e1
Double_t e2
ObjectVector< EvtRecPi0 > EvtRecPi0Col
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations xmb DOUBLE PRECISION xcb DOUBLE PRECISION xmpi0
Definition RRes.h:32
IMessageSvc * msgSvc()
void setLoPfit(const HepLorentzVector &loPfit)
void setLoEnGamma(const EvtRecTrack *trk)
void setHiPfit(const HepLorentzVector &hiPfit)
void setHiEnGamma(const EvtRecTrack *trk)
static KinematicFit * instance()
void BuildVirtualParticle(int number)
void AddResonance(int number, double mres, std::vector< int > tlis)
void AddTrack(const int number, const double mass, const RecMdcTrack *trk)
Definition TrackPool.cxx:21

◆ finalize()

StatusCode Pi0EtaToGGRecAlg::finalize ( )

Definition at line 144 of file misc/Pi0EtaToGGRecAlg.cxx.

144 {
145
146 MsgStream log( msgSvc(), name() );
147 log << MSG::INFO << "in finalize()" << endmsg;
148
149 return StatusCode::SUCCESS;
150}

◆ initialize()

StatusCode Pi0EtaToGGRecAlg::initialize ( )

Definition at line 32 of file misc/Pi0EtaToGGRecAlg.cxx.

32 {
33
34 MsgStream log( msgSvc(), name() );
35 log << MSG::INFO << "in initialize()" << endmsg;
36
37 return StatusCode::SUCCESS;
38}

The documentation for this class was generated from the following files: