00001 #ifndef FORIA_DATACONVERTER_HH
00002 #define FORIA_DATACONVERTER_HH
00003
00004 #include "ForIA/Event.hh"
00005 #include "ForIA/Track.hh"
00006 #include "ForIA/TriggerDecision.hh"
00007 #include "ForIA/TruthParticle.hh"
00008 #include "ForIA/Vertex.hh"
00009 #include "ForIA/L1TriggerBit.hh"
00010 #include "ForIA/L2SpacePoints.hh"
00011
00012 #include "ForIA/Cluster.hh"
00013 #include "ForIA/Jet.hh"
00014 #include "ForIA/JetKey.hh"
00015 #include "ForIA/TruthJet.hh"
00016 #include "ForIA/EtMiss.hh"
00017
00018 #include "ForIA/DetectorErrors.hh"
00019
00020 #include <map>
00021 #include <string>
00022
00023 namespace ForIA{
00024
00025 using std::map;
00026 using std::string;
00027
00028
00029 #define setterFunction(obj,varType,var) void set##var(obj &o, varType x){o.var = x;}
00030
00031
00032
00033
00034
00035
00036 #define setVar(obj,var,val) set##var(obj, val)
00037
00038 class DataConverter{
00039
00040 public:
00041
00042 virtual ~DataConverter(){};
00043
00044 virtual void initialise() = 0;
00045 virtual bool nextEvent() = 0;
00046 virtual void storeEvent() = 0;
00047
00048 virtual const Event &loadEvent() = 0;
00049 virtual const TrackVector &loadTracks(const Event *evt) = 0;
00050 virtual const ClusterVector &loadClusters() = 0;
00051 virtual const JetVector &loadJets(const JetKey &jetKey, const Event *evt) = 0;
00052 virtual const TruthJetVector &loadTruthJets() = 0;
00053 virtual const TriggerConfiguration &loadTriggerConfiguration() = 0;
00054 virtual TriggerDecisionPtr loadTriggerDecision() = 0;
00055 virtual const TruthParticleVector &loadTruthParticles() = 0;
00056 virtual const VertexVector &loadTruthVertices() = 0;
00057 virtual const VertexVector &loadVertices(const Event* evt=0) = 0;
00058 virtual L1TriggerBitPtr loadL1Trigger() = 0;
00059 virtual L2SpacePointsConstPtr loadL2SpacePoints() = 0;
00060 virtual EtMissPtr loadEtMiss() = 0;
00061
00062 virtual DetectorErrorsConstPtr loadDetectorErrors() = 0;
00063
00064 protected:
00065
00066 setterFunction(Event, unsigned long, m_runNumber);
00067 setterFunction(Event, unsigned long, m_eventNumber);
00068 setterFunction(Event, unsigned int, m_lumiBlock);
00069 setterFunction(Event, double, m_weight);
00070 setterFunction(Event, bool, m_goodRun);
00071 setterFunction(Event, bool, m_goodLumiBlock);
00072
00073 setterFunction(Track, float, m_eta);
00074 setterFunction(Track, float, m_theta);
00075 setterFunction(Track, float, m_phi);
00076 setterFunction(Track, float, m_phi_wrt_bs);
00077 setterFunction(Track, float, m_phi_wrt_pvtx);
00078 setterFunction(Track, float, m_phi_wrt_tv);
00079 setterFunction(Track, float, m_theta_wrt_bs);
00080 setterFunction(Track, float, m_theta_wrt_pvtx);
00081 setterFunction(Track, float, m_theta_wrt_tv);
00082 setterFunction(Track, float, m_PT);
00083 setterFunction(Track, float, m_d0);
00084 setterFunction(Track, float, m_z0);
00085 setterFunction(Track, float, m_d0_wrt_bs);
00086 setterFunction(Track, float, m_d0_wrt_pvtx);
00087 setterFunction(Track, float, m_d0_wrt_tv);
00088 setterFunction(Track, float, m_z0_wrt_bs);
00089 setterFunction(Track, float, m_z0_wrt_pvtx);
00090 setterFunction(Track, float, m_z0_wrt_tv);
00091 setterFunction(Track, float, m_chi2);
00092 setterFunction(Track, int, m_dof);
00093 setterFunction(Track, int, m_nPix);
00094 setterFunction(Track, int, m_nSCT);
00095 setterFunction(Track, int, m_nTRT);
00096 setterFunction(Track, int, m_nBLayer);
00097 setterFunction(Track, int, m_id);
00098 setterFunction(Track, bool, m_expectBLayer);
00099 setterFunction(Track, bool, m_isMC);
00100 setterFunction(Track, bool, m_haveThetaOrigins);
00101 setterFunction(Track, bool, m_haveTV);
00102 setterFunction(Track, Track::TrackAuthor, m_author);
00103 setterFunction(Track, const Event*, m_event);
00104
00105 setterFunction(TriggerConfiguration, unsigned int, m_smk);
00106 setterFunction(TriggerConfiguration, unsigned int, m_l1PSK);
00107 setterFunction(TriggerConfiguration, unsigned int, m_hltPSK);
00108 setterFunction(TriggerConfiguration, TriggerConfiguration::Status, m_status);
00109 setterFunction(TriggerConfiguration, TriggerConfiguration::NameIDMap, m_l1Names);
00110 setterFunction(TriggerConfiguration, TriggerConfiguration::NameIDMap, m_hltNames);
00111 setterFunction(TriggerConfiguration, TriggerConfiguration::PrescaleMap, m_hltPrescales);
00112 setterFunction(TriggerConfiguration, TriggerConfiguration::PrescaleMap, m_l1Prescales);
00113 setterFunction(TriggerConfiguration, TriggerConfiguration::LowerChainMap, m_lowerChainNames);
00114
00115 setterFunction(TriggerDecision, const vector<unsigned int>*, m_ctpBits);
00116 setterFunction(TriggerDecision, const vector<short>*, m_efPassedPhysics);
00117 setterFunction(TriggerDecision, const vector<short>*, m_l2PassedPhysics);
00118
00119 setterFunction(TruthParticle, int, m_pdg);
00120 setterFunction(TruthParticle, float, m_charge);
00121 setterFunction(TruthParticle, int, m_barcode);
00122 setterFunction(TruthParticle, int, m_status);
00123 setterFunction(TruthParticle, int, m_motherPdg);
00124 setterFunction(TruthParticle, bool, m_haveMotherPdgId);
00125 setterFunction(TruthParticle, float, m_eta);
00126 setterFunction(TruthParticle, bool, m_haveEta);
00127 setterFunction(TruthParticle, float, m_theta);
00128 setterFunction(TruthParticle, bool, m_haveTheta);
00129 setterFunction(TruthParticle, float, m_phi);
00130 setterFunction(TruthParticle, float, m_e);
00131 setterFunction(TruthParticle, bool, m_haveE);
00132 setterFunction(TruthParticle, float, m_et);
00133 setterFunction(TruthParticle, bool, m_haveET);
00134 setterFunction(TruthParticle, float, m_pt);
00135 setterFunction(TruthParticle, float, m_mass);
00136 setterFunction(TruthParticle, bool, m_haveMass);
00137
00138 setterFunction(EtMiss, float, m_nocalSumEt);
00139 setterFunction(EtMiss, float, m_nocalMet);
00140 setterFunction(EtMiss, float, m_nocalMetx);
00141 setterFunction(EtMiss, float, m_nocalMety);
00142 setterFunction(EtMiss, float, m_calibSumEt);
00143 setterFunction(EtMiss, float, m_calibMet);
00144 setterFunction(EtMiss, float, m_calibMetx);
00145 setterFunction(EtMiss, float, m_calibMety);
00146 setterFunction(EtMiss, float, m_intTruthSumEt);
00147 setterFunction(EtMiss, float, m_intTruthMet);
00148 setterFunction(EtMiss, float, m_intTruthMetx);
00149 setterFunction(EtMiss, float, m_intTruthMety);
00150 setterFunction(EtMiss, float, m_ninTruthSumEt);
00151 setterFunction(EtMiss, float, m_ninTruthMet);
00152 setterFunction(EtMiss, float, m_ninTruthMetx);
00153 setterFunction(EtMiss, float, m_ninTruthMety);
00154
00155 setterFunction(Cluster, float, m_E_calib);
00156 setterFunction(Cluster, float, m_E_em);
00157 setterFunction(Cluster, float, m_E_had);
00158 setterFunction(Cluster, float, m_ET);
00159 setterFunction(Cluster, float, m_phi);
00160 setterFunction(Cluster, float, m_eta);
00161 setterFunction(Cluster, float, m_M);
00162
00163 setterFunction(Cluster, bool, m_hasCaloLayerEnergies);
00164 setterFunction(Cluster, bool, m_clusIsMC);
00165 setterFunction(Cluster, float, m_E_EMB1);
00166 setterFunction(Cluster, float, m_E_EMB2);
00167 setterFunction(Cluster, float, m_E_EMB3);
00168 setterFunction(Cluster, float, m_E_EME1);
00169 setterFunction(Cluster, float, m_E_EME2);
00170 setterFunction(Cluster, float, m_E_EME3);
00171 setterFunction(Cluster, float, m_E_HEC0);
00172 setterFunction(Cluster, float, m_E_HEC1);
00173 setterFunction(Cluster, float, m_E_HEC2);
00174 setterFunction(Cluster, float, m_E_HEC3);
00175 setterFunction(Cluster, float, m_E_FCAL0);
00176 setterFunction(Cluster, float, m_E_FCAL1);
00177 setterFunction(Cluster, float, m_E_FCAL2);
00178 setterFunction(Cluster, float, m_E_PreSamplerB);
00179 setterFunction(Cluster, float, m_E_PreSamplerE);
00180 setterFunction(Cluster, float, m_E_TileBar0);
00181 setterFunction(Cluster, float, m_E_TileBar1);
00182 setterFunction(Cluster, float, m_E_TileBar2);
00183 setterFunction(Cluster, float, m_E_TileExt0);
00184 setterFunction(Cluster, float, m_E_TileExt1);
00185 setterFunction(Cluster, float, m_E_TileExt2);
00186 setterFunction(Cluster, float, m_E_TileGap1);
00187 setterFunction(Cluster, float, m_E_TileGap2);
00188 setterFunction(Cluster, float, m_E_TileGap3);
00189
00190 setterFunction(Cluster, float, m_phi_EMB1);
00191 setterFunction(Cluster, float, m_phi_EMB2);
00192 setterFunction(Cluster, float, m_phi_EMB3);
00193 setterFunction(Cluster, float, m_phi_EME1);
00194 setterFunction(Cluster, float, m_phi_EME2);
00195 setterFunction(Cluster, float, m_phi_EME3);
00196 setterFunction(Cluster, float, m_phi_HEC0);
00197 setterFunction(Cluster, float, m_phi_HEC1);
00198 setterFunction(Cluster, float, m_phi_HEC2);
00199 setterFunction(Cluster, float, m_phi_HEC3);
00200 setterFunction(Cluster, float, m_phi_FCAL0);
00201 setterFunction(Cluster, float, m_phi_FCAL1);
00202 setterFunction(Cluster, float, m_phi_FCAL2);
00203 setterFunction(Cluster, float, m_phi_PreSamplerB);
00204 setterFunction(Cluster, float, m_phi_PreSamplerE);
00205 setterFunction(Cluster, float, m_phi_TileBar0);
00206 setterFunction(Cluster, float, m_phi_TileBar1);
00207 setterFunction(Cluster, float, m_phi_TileBar2);
00208 setterFunction(Cluster, float, m_phi_TileExt0);
00209 setterFunction(Cluster, float, m_phi_TileExt1);
00210 setterFunction(Cluster, float, m_phi_TileExt2);
00211 setterFunction(Cluster, float, m_phi_TileGap1);
00212 setterFunction(Cluster, float, m_phi_TileGap2);
00213 setterFunction(Cluster, float, m_phi_TileGap3);
00214
00215 setterFunction(Cluster, float, m_eta_EMB1);
00216 setterFunction(Cluster, float, m_eta_EMB2);
00217 setterFunction(Cluster, float, m_eta_EMB3);
00218 setterFunction(Cluster, float, m_eta_EME1);
00219 setterFunction(Cluster, float, m_eta_EME2);
00220 setterFunction(Cluster, float, m_eta_EME3);
00221 setterFunction(Cluster, float, m_eta_HEC0);
00222 setterFunction(Cluster, float, m_eta_HEC1);
00223 setterFunction(Cluster, float, m_eta_HEC2);
00224 setterFunction(Cluster, float, m_eta_HEC3);
00225 setterFunction(Cluster, float, m_eta_FCAL0);
00226 setterFunction(Cluster, float, m_eta_FCAL1);
00227 setterFunction(Cluster, float, m_eta_FCAL2);
00228 setterFunction(Cluster, float, m_eta_PreSamplerB);
00229 setterFunction(Cluster, float, m_eta_PreSamplerE);
00230 setterFunction(Cluster, float, m_eta_TileBar0);
00231 setterFunction(Cluster, float, m_eta_TileBar1);
00232 setterFunction(Cluster, float, m_eta_TileBar2);
00233 setterFunction(Cluster, float, m_eta_TileExt0);
00234 setterFunction(Cluster, float, m_eta_TileExt1);
00235 setterFunction(Cluster, float, m_eta_TileExt2);
00236 setterFunction(Cluster, float, m_eta_TileGap1);
00237 setterFunction(Cluster, float, m_eta_TileGap2);
00238 setterFunction(Cluster, float, m_eta_TileGap3);
00239
00240 setterFunction(Cluster, bool, m_hasClusterMoments);
00241 setterFunction(Cluster, float, m_cellmaxfrac);
00242 setterFunction(Cluster, float, m_centerlambda);
00243 setterFunction(Cluster, float, m_firstEdens);
00244 setterFunction(Cluster, float, m_lateral);
00245 setterFunction(Cluster, float, m_longitudinal);
00246 setterFunction(Cluster, float, m_secondR);
00247 setterFunction(Cluster, float, m_secondlambda);
00248 setterFunction(Cluster, float, m_time);
00249 setterFunction(Cluster, float, m_deltaPhi);
00250 setterFunction(Cluster, float, m_deltaTheta);
00251
00252
00253 setterFunction(Jet, double, m_hecFraction);
00254 setterFunction(Jet, double, m_hecQuality);
00255 setterFunction(Jet, double, m_larQuality);
00256 setterFunction(Jet, double, m_averageLARQualityFraction);
00257 setterFunction(Jet, double, m_negEnergy);
00258 setterFunction(Jet, double, m_trackPTSum);
00259 setterFunction(Jet, double, m_fracSamplingMax);
00260 setterFunction(Jet, double, m_emScaleEta);
00261 setterFunction(Jet, double, m_emFrac);
00262 setterFunction(Jet, double, m_tileGap3);
00263 setterFunction(Jet, double, m_bchCorrCell);
00264 setterFunction(Jet, bool, m_isBadLoose);
00265 setterFunction(Jet, bool, m_isBadMedium);
00266 setterFunction(Jet, bool, m_isBadTight);
00267 setterFunction(Jet, const Event*, m_event);
00268
00269 setterFunction(TruthJet, double, m_E);
00270 setterFunction(TruthJet, double, m_PT);
00271 setterFunction(TruthJet, double, m_phi);
00272 setterFunction(TruthJet, double, m_eta);
00273
00274 setterFunction(Vertex, double, m_x);
00275 setterFunction(Vertex, double, m_y);
00276 setterFunction(Vertex, double, m_z);
00277 setterFunction(Vertex, int, m_nTracks);
00278 setterFunction(Vertex, Vertex::VertexType, m_type);
00279 setterFunction(Vertex, bool, m_haveTrackIDs);
00280 setterFunction(Vertex, vector<int>, m_trackIDs);
00281 setterFunction(Vertex, const Event*, m_event);
00282
00283 setterFunction(L1TriggerBit, unsigned int, m_lvl1aBC);
00284 setterFunction(L1TriggerBit, const vector<unsigned int>*, m_rdo_TAV);
00285
00286 setterFunction(L2SpacePoints, size_t, m_sctEndCapA);
00287 setterFunction(L2SpacePoints, size_t, m_sctEndCapC);
00288 setterFunction(L2SpacePoints, size_t, m_sctBarrel);
00289
00290 private:
00291
00292 };
00293 }
00294
00295 #endif