Go to the documentation of this file.00001 #ifndef FORIA_EVENT_HH
00002 #define FORIA_EVENT_HH
00003
00004 #include "ForIA/Cluster.hh"
00005 #include "ForIA/DetectorErrors.hh"
00006 #include "ForIA/Jet.fh"
00007 #include "ForIA/L1TriggerBit.fh"
00008 #include "ForIA/L2SpacePoints.fh"
00009 #include "ForIA/Track.fh"
00010 #include "ForIA/TriggerConfiguration.hh"
00011 #include "ForIA/TriggerDecision.fh"
00012 #include "ForIA/TruthParticle.fh"
00013 #include "ForIA/TruthJet.fh"
00014 #include "ForIA/Vertex.fh"
00015 #include "ForIA/Event.fh"
00016
00017 #include "ForIA/EtMiss.hh"
00018
00019 #include "ForIA/JetKey.fh"
00020
00021 #include "boost/unordered_map.hpp"
00022 #include "boost/unordered_set.hpp"
00023
00024 #include <iostream>
00025
00026 namespace ForIA{
00027
00028 class DataConverter;
00029
00031
00040 class Event{
00041
00042 public:
00049 Event(DataConverter *converter);
00050
00052 unsigned long runNumber()const;
00054 unsigned long eventNumber()const;
00056 unsigned int lumiBlock()const;
00058 bool goodRun() const;
00060 bool goodLumiBlock()const;
00061
00063 double weight()const;
00064
00066 const ClusterVector &clusters() const;
00067
00069 DetectorErrorsConstPtr detectorErrors()const;
00070
00075 const JetVector &jets(const JetKey &jetKey) const;
00077 const JetVector &jets() const;
00079 void matchTracksToJets(const JetKey &key)const;
00081 void matchVerticesToTracks()const;
00082
00084 const TrackVector &tracks() const;
00086 const VertexVector &vertices() const ;
00088 const TriggerConfiguration &triggerConfiguration()const;
00090 TriggerDecisionPtr triggerDecision()const;
00092 const TruthParticleVector &truthParticles() const;
00094 const TruthJetVector &truthJets() const;
00096 const VertexVector &truthVertices() const;
00098 L1TriggerBitPtr l1Trigger() const;
00100 L2SpacePointsConstPtr l2SpacePoints()const;
00102 EtMissPtr met() const;
00103
00105 void clear();
00106
00107 private:
00108
00114 friend std::ostream &operator << (std::ostream &out, const Event &evt);
00115
00116 DataConverter *m_converter;
00117 friend class DataConverter;
00118
00119 unsigned long m_runNumber;
00120 long m_eventNumber;
00121 unsigned int m_lumiBlock;
00122
00123 bool m_goodRun;
00124 bool m_goodLumiBlock;
00125
00126 double m_weight;
00127
00128 mutable bool m_gotClusters;
00129 mutable bool m_gotDetectorErrors;
00130 mutable bool m_gotTracks;
00131 mutable bool m_gotVertices;
00132 mutable bool m_gotTriggerConfiguration;
00133 mutable bool m_gotTriggerDecision;
00134 mutable bool m_gotTruth;
00135 mutable bool m_gotTruthJets;
00136 mutable bool m_gotTruthVertices;
00137 mutable bool m_gotL1Trigger;
00138 mutable bool m_gotL2SpacePoints;
00139 mutable bool m_gotMet;
00140
00141 mutable boost::unordered_map<JetKey, bool> m_gotJets;
00142
00143
00144 mutable ClusterVector m_clusters;
00145 mutable DetectorErrorsConstPtr m_detectorErrors;
00146 mutable TrackVector m_tracks;
00147 mutable VertexVector m_vertices;
00148 mutable TriggerConfiguration m_triggerConfiguration;
00149 mutable TriggerDecisionPtr m_triggerDecision;
00150 mutable TruthParticleVector m_truthParticles;
00151 mutable TruthJetVector m_truthJets;
00152 mutable VertexVector m_truthVertices;
00153 mutable L1TriggerBitPtr m_l1Trigger;
00154 mutable L2SpacePointsConstPtr m_l2SpacePoints;
00155 mutable EtMissPtr m_etMiss;
00156
00157 mutable boost::unordered_map<JetKey, JetVector> m_jets;
00158
00159 };
00160 }
00161
00162 #endif