00001
00002
00003 #ifndef XAODTRUTH_VERSIONS_TRUTHEVENT_V1_H
00004 #define XAODTRUTH_VERSIONS_TRUTHEVENT_V1_H
00005
00006
00007 #include <utility>
00008 #include <vector>
00009
00010
00011 #include "AthContainers/AuxElement.h"
00012 #include "AthLinks/ElementLink.h"
00013 #include "xAODBase/ObjectType.h"
00014
00015
00016 #include "xAODTruth/TruthEventBase.h"
00017 #include "xAODTruth/TruthParticleContainer.h"
00018 #include "xAODTruth/TruthVertexContainer.h"
00019
00020 namespace xAOD {
00021
00030 class TruthEvent_v1 : public TruthEventBase_v1 {
00031
00032 public:
00034 TruthEvent_v1();
00035
00038
00041 const std::vector< float >& weights() const;
00044 void setWeights( const std::vector< float >& weights );
00045
00047 float crossSection() const;
00049 void setCrossSection( float value );
00050
00052 float crossSectionError() const;
00054 void setCrossSectionError( float value );
00055
00057 void setCrossSection( float value, float error );
00058
00060
00067
00069 enum PdfParam {
00070 PDGID1 = 0,
00071 PDGID2 = 1,
00072 PDFID1 = 2,
00073 PDFID2 = 3,
00074 X1 = 4,
00075 X2 = 5,
00076 SCALE = 6,
00077 Q = 6,
00078 PDF1 = 7,
00079 PDF2 = 8,
00080 XF1 = 7,
00081 XF2 = 8
00082 };
00083
00085 bool pdfInfoParameter( int& value, PdfParam parameter ) const;
00087 bool pdfInfoParameter( float& value, PdfParam parameter ) const;
00088
00090 bool setPdfInfoParameter( int value, PdfParam parameter );
00092 bool setPdfInfoParameter( float value, PdfParam parameter );
00093
00095 struct PdfInfo {
00096
00098 PdfInfo();
00099
00101 bool valid() const;
00102
00103 int pdgId1;
00104 int pdgId2;
00105 int pdfId1;
00106 int pdfId2;
00107 float x1;
00108 float x2;
00109 float Q;
00110 float xf1;
00111 float xf2;
00112
00113 };
00114
00117 PdfInfo pdfInfo() const;
00118
00120
00123
00125 enum HIParam {
00126 NCOLLHARD = 0,
00127 NPARTPROJ = 1,
00128 NPARTTARG = 2,
00129 NCOLL = 3,
00130 SPECTATORNEUTRONS = 4,
00131 SPECTATORPROTONS = 5,
00132 NNWOUNDEDCOLLISIONS = 6,
00133 NWOUNDEDNCOLLISIONS = 7,
00134 NWOUNDEDNWOUNDEDCOLLISIONS = 8,
00135 IMPACTPARAMETER = 9,
00136 EVENTPLANEANGLE = 10,
00137 ECCENTRICITY = 11,
00138 SIGMAINELNN = 12,
00139 CENTRALITY = 13,
00140 };
00141
00143 bool heavyIonParameter( int& value, HIParam parameter ) const;
00145 bool heavyIonParameter( float& value, HIParam parameter ) const;
00146
00148 bool setHeavyIonParameter( int value, HIParam parameter );
00150 bool setHeavyIonParameter( float value, HIParam parameter );
00151
00153
00156
00158 typedef ElementLink< TruthVertexContainer > TruthVertexLink_t;
00159
00165 const TruthVertex* signalProcessVertex() const;
00167 const TruthVertexLink_t& signalProcessVertexLink() const;
00169 void setSignalProcessVertexLink( const TruthVertexLink_t& link );
00170
00172 typedef ElementLink< TruthParticleContainer > TruthParticleLink_t;
00173
00175 std::pair< const TruthParticle*, const TruthParticle* >
00176 beamParticles() const;
00177
00179 void setBeamParticleLinks( const TruthParticleLink_t& pcl1,
00180 const TruthParticleLink_t& pcl2 );
00181
00183 const TruthParticleLink_t& beamParticle1Link() const;
00185 void setBeamParticle1Link( const TruthParticleLink_t& pcl1 );
00186
00188 const TruthParticleLink_t& beamParticle2Link() const;
00190 void setBeamParticle2Link( const TruthParticleLink_t& pcl2 );
00191
00193
00195 virtual Type::ObjectType type() const;
00196
00198 void toPersistent();
00199
00200 };
00201
00202 }
00203
00204
00205 #include "xAODCore/BaseInfo.h"
00206 SG_BASE( xAOD::TruthEvent_v1, xAOD::TruthEventBase_v1 );
00207
00208 #endif // XAODTRUTH_VERSIONS_TRUTHEVENT_V1_H