Geant4-11
MT_SET_MAX.icc
Go to the documentation of this file.
1
2#define TOOLS_WROOT_MT_NTUPLE_SET_MAX(a__type) \
3 {leaf_ref<a__type>* _mleaf_ = _mleaf?id_cast<base_leaf, leaf_ref<a__type> >(*_mleaf):0;\
4 leaf_ref<a__type>* _pleaf_ = _pleaf?id_cast<base_leaf, leaf_ref<a__type> >(*_pleaf):0;\
5 if(_mleaf_&&!_pleaf_) {\
6 m_out << "tools::wroot::mt_ntuple::end_leaves : merge leaves problem (1)." << std::endl;\
7 if(_mleaf) m_out << "main leaf name " << _mleaf->name() << ", cid " << _mleaf->id_cls() << std::endl;\
8 return false;\
9 }\
10 if(!_mleaf_&&_pleaf_) {\
11 m_out << "tools::wroot::mt_ntuple::end_leaves : merge leaves problem (2)." << std::endl;\
12 if(_pleaf) m_out << "to compare with parallel leaf name " << _pleaf->name() << ", cid " << _pleaf->id_cls() << std::endl;\
13 return false;\
14 }\
15 if(_mleaf_ && _pleaf_) {\
16 /*uint32 _length = _pleaf_->length();*/\
17 a__type _mx = _pleaf_->get_max();\
18 a_mutex.lock(); /*do it here (and not outside loop) because of upper m_out.*/\
19 /*_mleaf_->set_length(max_of(_length,_mleaf_->length()));*/\
20 _mleaf_->set_max(max_of<a__type>(_mx,_mleaf_->get_max()));\
21 a_mutex.unlock();\
22 }}
23
24#define TOOLS_WROOT_MT_NTUPLE_STRING_SET_MAX \
25 {leaf_string_ref* _mleaf_ = _mleaf?id_cast<base_leaf,leaf_string_ref>(*_mleaf):0;\
26 leaf_string_ref* _pleaf_ = _pleaf?id_cast<base_leaf,leaf_string_ref>(*_pleaf):0;\
27 if(_mleaf_&&!_pleaf_) {\
28 m_out << "tools::wroot::mt_ntuple::end_leaves : merge string leaves problem (1)." << std::endl;\
29 if(_mleaf) m_out << "main leaf name " << _mleaf->name() << ", cid " << _mleaf->id_cls() << std::endl;\
30 return false;\
31 }\
32 if(!_mleaf_&&_pleaf_) {\
33 m_out << "tools::wroot::mt_ntuple::end_leaves : merge string leaves problem (2)." << std::endl;\
34 if(_pleaf) m_out << "to compare with parallel leaf name " << _pleaf->name() << ", cid " << _pleaf->id_cls() << std::endl;\
35 return false;\
36 }\
37 if(_mleaf_ && _pleaf_) {\
38 /*m_out << "tools::wroot::mt_ntuple::end_leaves : merge string leaves ok." << std::endl;*/\
39 uint32 _length = _pleaf_->length();\
40 int _mx = _pleaf_->get_max();\
41 a_mutex.lock(); /*do it here (and not outside loop) because of upper m_out.*/\
42 _mleaf_->set_length(max_of(_length,_mleaf_->length()));\
43 _mleaf_->set_max(max_of(_mx,_mleaf_->get_max()));\
44 a_mutex.unlock();\
45 }}
46