|
ATLAS Offline Software
|
Go to the documentation of this file.
12 #ifndef TIDAUTILS_TAGNPROBE_H
13 #define TIDAUTILS_TAGNPROBE_H
25 #include "TLorentzVector.h"
32 TagNProbe(
const std::string& refName,
double massMin,
double massMax,
bool unique_flag=
true );
34 TagNProbe(
const std::string& refName0,
const std::string& refName1,
double massMin,
double massMax,
bool unique_flag=
true );
80 std::vector<TIDA::Roi*> probes;
85 if ( chain_tag==0 || chain_probe==0 )
return probes;
88 for (
size_t ip=0 ;
ip<chain_probe->
size() ;
ip++ ) {
94 bool found_tnp =
false;
97 for (
size_t it=0 ;
it<chain_tag->
size() ;
it++ ) {
103 if ( roi_probe == roi_tag )
continue;
105 if (
selection( troi, proi, selector_tag, filter_tag, selector_probe, filter_probe,
106 hmass, hmass_obj, tom_tag, tom_probe ) ) {
114 if ( found_tnp ) probes.push_back( &proi );
127 template<
typename T1,
typename T2>
163 std::vector<TIDA::Track*> refp_tag = selector_tag->
tracks( filter_tag );
171 std::vector<TIDA::Track*> refp_probe = selector_probe->
tracks( filter_probe );
176 for (
size_t it=0;
it<refp_tag.size() ;
it++ ) {
179 for (
size_t ip=0;
ip<refp_probe.size() ;
ip++ ) {
182 double invmass =
mass( refp_tag[
it], refp_probe[
ip] );
183 double invmass_obj =
mass_obj( refp_tag[
it], refp_probe[
ip], tom_tag, tom_probe );
184 double deltaz0 = std::fabs(refp_tag[
it]->
z0() - refp_probe[
ip]->
z0() );
187 hmass->Fill( invmass );
188 hmass_obj->Fill( invmass_obj );
225 s <<
"[ TagNProbe: chains tag: " <<
t.tag() <<
"\tprobe: " <<
t.probe() <<
"\n";
226 s <<
" type: " <<
t.type0() <<
"\t " <<
t.type1() <<
"\n";
227 s <<
" mass: " <<
t.mass0() <<
"\t " <<
t.mass1() <<
" ]";
const TIDARoiDescriptor & roi() const
access the roi information
bool selection(const TIDA::Roi &troi, const TIDA::Roi &proi, const TrackSelector *selector, TrackFilter *filter, T *hmass, T *hmass_obj, TrigObjectMatcher *tom=0) const
const std::string & probe() const
const std::string & tag() const
bool selection(const TIDA::Roi &troi, const TIDA::Roi &proi, const TrackSelector *selector_tag, TrackFilter *filter_tag, const TrackSelector *selector_probe, TrackFilter *filter_probe, T *hmass, T *hmass_obj, TrigObjectMatcher *tom_tag=0, TrigObjectMatcher *tom_probe=0) const
std::vector< ALFA_RawDataCollection_p1 > t1
unsigned size() const
number of rois
std::string m_particleType1
Describes the Region of Ineterest geometry It has basically 8 parameters.
const std::vector< TIDA::Roi > & rois() const
get back roi vector
std::string m_particleType0
double pt(const TrackTrigObject *t) const
double pt(const TIDA::Track *t) const
TIDA::Chain * findChain(const std::string &chainname, std::vector< TIDA::Chain > &chains) const
const std::string & type0() const
void tag(const std::string &chainName)
getters and setters
std::string m_probeChainName
std::ostream & operator<<(std::ostream &s, const TagNProbe &t)
const std::string & type1() const
const std::vector< TIDA::Track * > & tracks() const
std::vector< ALFA_RawDataContainer_p1 > t2
std::vector< TIDA::Roi * > GetRois(std::vector< TIDA::Chain > &chains, const TrackSelector *selector, TrackFilter *filter, T *hmass, T *hmass_obj, TrigObjectMatcher *tom=0) const
TagNProbe(const std::string &refName, double massMin, double massMax, bool unique_flag=true)
chain container, contains rois
double mass_obj(const TIDA::Track *t1, const TIDA::Track *t2, TrigObjectMatcher *tom=0) const
double mass(const T1 *t1, const T2 *t2) const
std::string m_tagChainName
std::vector< TIDA::Roi * > GetRois(std::vector< TIDA::Chain > &chains, const TrackSelector *selector_tag, TrackFilter *filter_tag, const TrackSelector *selector_probe, TrackFilter *filter_probe, T *hmass, T *hmass_obj, TrigObjectMatcher *tom_tag=0, TrigObjectMatcher *tom_probe=0) const
void probe(const std::string &chainName)