|
ATLAS Offline Software
|
Go to the documentation of this file.
37 declareInterface<IDataRetriever>(
this);
43 ATH_MSG_WARNING(
"Number of btaggers and CDI files do not match. Will not retrieve b-tagging information.");
44 return StatusCode::SUCCESS;
51 btagSelTool.
setTypeAndName(
"BTaggingSelectionTool/btagSelTool_"+taggerName);
61 return StatusCode::SUCCESS;
78 if (
sc.isFailure() ) {
93 return StatusCode::SUCCESS;
98 std::string::size_type position =
iterator.key().find(
"HLT",0);
100 if ( position != 0 ){
116 if ( !
evtStore()->contains<xAOD::JetContainer>(jetkey)){
continue; }
118 if (!
sc.isFailure()) {
121 if ( FormatTool->AddToEvent(
dataTypeName(), jetkey+
"_xAOD", &
data).isFailure()){
130 return StatusCode::SUCCESS;
161 DataVect trackContKey; trackContKey.reserve(jetCont->
size());
162 DataVect trackLinkCount; trackLinkCount.reserve(jetCont->
size());
171 for (
const auto jet : *jetCont) {
176 size_t numConstit =
jet->numConstituents();
177 std::vector<std::string> tempCellID;
178 size_t trackcounter = 0;
179 if (numConstit > 0) {
186 for (
size_t i = 0;
i < numConstit;
i++) {
198 size_t numConstit =
jet->numConstituents();
199 for (
size_t i = 0;
i < numConstit;
i++) {
206 if (thisTrack !=
nullptr) {
218 for (
size_t j = 0; j < numConstit; ++j) {
222 if (
std::find(tempCellID.begin(), tempCellID.end(),
std::to_string(
cc->caloDDE()->identify().get_compact())) != tempCellID.end()) {
225 cellID.push_back(
DataType(
cc->caloDDE()->identify().get_compact()));
226 tempCellID.push_back(
std::to_string(
cc->caloDDE()->identify().get_compact()));
234 if (ghosttracks.empty()) {
237 for (
size_t i = 0;
i < ghosttracks.size();
i++) {
245 ATH_MSG_VERBOSE(
" Associated track: d0 = " << ghosttracks[
i]->
d0() <<
", pt = " << ghosttracks[
i]->
pt());
247 trackcounter = ghosttracks.size();
250 for (
size_t j = 0; j < numConstit; ++j) {
264 trackLinkCount.push_back(
DataType(trackcounter));
281 if (jetkey!=
"AntiKt4EMPFlowJets" || (
m_nTaggers==0)){
282 bTagName.push_back(
DataType(
"None"));
289 ATH_MSG_DEBUG(
"Failed to get btagging weight for tagger " << taggerName);
292 bTagName.push_back(
DataType(taggerName));
293 bTagValue.push_back(
DataType(btagValue));
307 std::vector<float> jvfread;
312 jvf.push_back(
DataType( jvfread[0] ));
323 float emfracread = 0;
328 emfrac.push_back(
DataType( emfracread ));
340 DataMap[
"bTagName multiple=\""+str_nTaggers+
"\""] = bTagName;
341 DataMap[
"bTagValue multiple=\""+str_nTaggers+
"\""] = bTagValue;
351 if ((trackKey.size()) != 0){
352 double NTracksPerVertex = trackKey.size()*1./jetCont->size();
353 std::string
tag =
"trackIndex multiple=\"" +
DataType(NTracksPerVertex).toString()+
"\"";
355 tag =
"trackKey multiple=\"" +
DataType(NTracksPerVertex).toString()+
"\"";
359 if ((clusterID.size())!=0){
360 std::string
tag =
"clusterIndex multiple=\"" +
DataType(clusterID.size()).toString()+
"\"";
361 double NCellsPerJet = cellID.size()*1./jetCont->size();
362 tag =
"cells multiple=\"" +
DataType(NCellsPerJet).toString()+
"\"";
366 DataMap[
"trackLinkCount"] = trackLinkCount;
JetConstituentVector::iterator iterator
virtual double phi() const
The azimuthal angle ( ) of the particle.
char data[hepevt_bytes_allocation_ATLAS]
Extra patterns decribing particle interation process.
Gaudi::Property< std::string > m_sgKeyFavourite
std::string find(const std::string &s)
return a remapped string
const TrackParticle * track(unsigned int index) const
Retrieve a const pointer to a Rec::TrackParticle.
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
std::unordered_map< std::string, asg::AnaToolHandle< IBTaggingSelectionTool > > m_btagSelTools
const DataMap getData(const xAOD::JetContainer *, const std::string &jetkey)
Retrieve basic parameters, mainly four-vectors, for each collection.
Gaudi::Property< bool > m_doWriteHLT
#define ATH_MSG_VERBOSE(x)
std::map< std::string, DataVect > DataMap
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
virtual StatusCode initialize()
TrackParticle_v1 TrackParticle
Reference the current persistent version:
xAODJetRetriever(const std::string &type, const std::string &name, const IInterface *parent)
Standard Constructor.
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Description of a calorimeter cluster.
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
Gaudi::Property< std::string > m_tracksName
virtual double eta() const
The pseudorapidity ( ) of the particle.
::StatusCode StatusCode
StatusCode definition for legacy code.
FlowElement_v1 FlowElement
Definition of the current "pfo version".
Gaudi::Property< std::vector< std::string > > m_otherKeys
signal_t signalType() const
@ ParticleFlow
The object is a particle-flow object.
size_t index() const
Return the index of this element within its container.
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
bool isCharged() const
is a charged PFO
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
const xAOD::IParticle * chargedObject(std::size_t i) const
Class describing a particle flow object.
virtual std::string dataTypeName() const
Return the name of the data type.
std::string to_string(const DetectorType &type)
double charge(const T &p)
Wrapper to avoid constant divisions when using units.
@ Ok
The correction was done successfully.
#define ATH_MSG_WARNING(x)
Return value from object correction CP tools.
Gaudi::Property< std::vector< std::string > > m_CDIPaths
Class describing a TrackParticle.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Property< std::vector< std::string > > m_bTaggerNames
A detector object made of other lower level object(s)