00001 #ifndef EVENT_HPP__
00002 #define EVENT_HPP__
00003
00004 #include "cafe/EventBase.hpp"
00005
00006
00007 #include "tmb_tree/TMBGlobal.hpp"
00008 #include "tmb_tree/TMBHistory.hpp"
00009 #include "tmb_tree/TMBTrigger.hpp"
00010 #include "tmb_tree/TMBEventFlags.hpp"
00011
00012
00013 #include "tmb_tree/TMBMuon.hpp"
00014 #include "tmb_tree/TMBEMCluster.hpp"
00015 #include "tmb_tree/TMBJet.hpp"
00016 #include "tmb_tree/TMBMet.hpp"
00017 #include "tmb_tree/TMBParticleJet.hpp"
00018 #include "tmb_tree/TMBMetEx.hpp"
00019 #include "tmb_tree/TMBTrack.hpp"
00020 #include "tmb_tree/TMBTau.hpp"
00021 #include "tmb_tree/TMBIsoTrack.hpp"
00022 #include "tmb_tree/TMBPrimaryVertex.hpp"
00023 #include "tmb_tree/TMBLeBob.hpp"
00024 #include "tmb_tree/TMBTrackCal.hpp"
00025 #include "tmb_tree/TMBTrackCalJet.hpp"
00026
00027 #include "tmb_tree/TMBCps.hpp"
00028 #include "tmb_tree/TMBFps.hpp"
00029
00030
00031 #include "tmb_tree/TMBBTag.hpp"
00032 #include "tmb_tree/TMBBTagSLT.hpp"
00033 #include "tmb_tree/TMBBTagJLIP.hpp"
00034 #include "tmb_tree/TMBBTagSVT.hpp"
00035 #include "tmb_tree/TMBBTagNN.hpp"
00036
00037
00038 #include "tmb_tree/TMBTrigBits.hpp"
00039 #include "tmb_tree/TMBHiPt.hpp"
00040
00041
00042 #include "tmb_tree/TMBMCpart.hpp"
00043 #include "tmb_tree/TMBMCvtx.hpp"
00044 #include "tmb_tree/TMBMCevtInfo.hpp"
00045
00046
00047
00048
00049 #include "tmb_tree/TMBL1AndOr.hpp"
00050 #include "tmb_tree/TMBL1Names.hpp"
00051 #include "tmb_tree/TMBL2Names.hpp"
00052 #include "tmb_tree/TMBL1Cal.hpp"
00053 #include "tmb_tree/TMBL1CalTile.hpp"
00054 #include "tmb_tree/TMBL1CalTower.hpp"
00055 #include "tmb_tree/TMBL1CTT.hpp"
00056 #include "tmb_tree/TMBL1Muon.hpp"
00057 #include "tmb_tree/TMBL1Track.hpp"
00058 #include "tmb_tree/TMBL1toL2CTT.hpp"
00059
00060
00061 #include "tmb_tree/TMBL2CPS.hpp"
00062 #include "tmb_tree/TMBL2EM.hpp"
00063 #include "tmb_tree/TMBL2FPS.hpp"
00064 #include "tmb_tree/TMBL2Muon.hpp"
00065 #include "tmb_tree/TMBL2Track.hpp"
00066 #include "tmb_tree/TMBL2Jet.hpp"
00067 #include "tmb_tree/TMBL2MEt.hpp"
00068
00069
00070 #include "tmb_tree/TMBL2GblEM.hpp"
00071 #include "tmb_tree/TMBL2GblHt.hpp"
00072 #include "tmb_tree/TMBL2GblInvMass.hpp"
00073 #include "tmb_tree/TMBL2GblJet.hpp"
00074 #include "tmb_tree/TMBL2GblMEt.hpp"
00075 #include "tmb_tree/TMBL2GblMJt.hpp"
00076 #include "tmb_tree/TMBL2GblMuon.hpp"
00077 #include "tmb_tree/TMBL2GblTau.hpp"
00078 #include "tmb_tree/TMBL2GblTrack.hpp"
00079 #include "tmb_tree/TMBL2GblTransMass.hpp"
00080
00081
00082 #include "tmb_tree/TMBL3BTagIP.hpp"
00083 #include "tmb_tree/TMBL3CFTVtx.hpp"
00084 #include "tmb_tree/TMBL3Ele.hpp"
00085 #include "tmb_tree/TMBL3IPTrack.hpp"
00086 #include "tmb_tree/TMBL3Isolation.hpp"
00087 #include "tmb_tree/TMBL3Jet.hpp"
00088 #include "tmb_tree/TMBL3MEt.hpp"
00089 #include "tmb_tree/TMBL3Muon.hpp"
00090 #include "tmb_tree/TMBL3Photon.hpp"
00091 #include "tmb_tree/TMBL3Tau.hpp"
00092 #include "tmb_tree/TMBL3Track.hpp"
00093
00094
00095 #include "tmb_tree/TMBCalNada.hpp"
00096 #include "tmb_tree/TMBCellContainer.hpp"
00097 #include "tmb_tree/TMBCps.hpp"
00098 #include "tmb_tree/TMBCpsDigi.hpp"
00099 #include "tmb_tree/TMBFps.hpp"
00100 #include "tmb_tree/TMBFpsData.hpp"
00101 #include "tmb_tree/TMBFpd.hpp"
00102 #include "tmb_tree/TMBFPDTrack.hpp"
00103 #include "tmb_tree/TMBTdc.hpp"
00104
00105
00106
00107 #include "tmb_tree/TMBLum.hpp"
00108 #include "tmb_tree/TMBLumV.hpp"
00109
00110 #include "tmb_tree/TMBSimCAEP.hpp"
00111
00112
00113 #include "tmb_tree/TMBHiPtWeight.hpp"
00114 #include "cafe/EventWeight.hpp"
00115
00116 namespace cafe {
00117
00126 class Event : public EventBase {
00127 public:
00128 Event();
00129
00131
00132
00134
00135 bool isMC() const;
00136 bool isRun2b() const;
00137 bool isRun2a() const {return !isRun2b();}
00138
00140 const TMBGlobal *getGlobal(const Variables& vars = cafe::detail::empty) const
00141 {
00142 return get<TMBGlobal>("Global", vars);
00143 }
00144
00146 const Collection<TMBHistory> getHistory(const Variables& vars = cafe::detail::empty) const
00147 {
00148 return getCollection<TMBHistory>("History");
00149 }
00150
00152 const TMBEventFlags *getEventFlags(const Variables& vars = cafe::detail::empty) const
00153 {
00154 return get<TMBEventFlags>("EventFlags", vars);
00155 }
00156
00158
00159
00161
00163
00165 Collection<TMBMuon> getMuons(const Variables& vars = cafe::detail::empty) const
00166 {
00167 return getCollection<TMBMuon>("Muon", vars);
00168 }
00169
00172 Collection<TMBEMCluster> getEM(const std::string& branchName, const Variables& vars = cafe::detail::empty) const
00173 {
00174 return getCollection<TMBEMCluster>(branchName, vars);
00175 }
00176
00178 Collection<TMBEMCluster> getEMscone(const Variables& vars = cafe::detail::empty) const
00179 {
00180 return getEM("EMscone", vars);
00181 }
00182
00184 Collection<TMBEMCluster> getEMcnn(const Variables& vars = cafe::detail::empty) const
00185 {
00186 return getEM("EMcnn", vars);
00187 }
00188
00190 Collection<TMBJet> getJets(const std::string &branchName, const Variables& vars = cafe::detail::empty) const
00191 {
00192 return getCollection<TMBJet>(branchName, vars);
00193 }
00194
00196 Collection<TMBJet> getJCCA(const Variables& vars = cafe::detail::empty) const
00197 {
00198 return getJets("JCCA", vars);
00199 }
00200
00202 Collection<TMBJet> getJCCB(const Variables& vars = cafe::detail::empty) const
00203 {
00204 return getJets("JCCB", vars);
00205 }
00206
00208 Collection<TMBLeBob> getLeBob(const Variables& vars = cafe::detail::empty) const
00209 {
00210 return getCollection<TMBLeBob>("LeBob", vars);
00211 }
00213 const TMBLeBob* getTMBLeBob(const std::string &branchName, const Variables& vars = cafe::detail::empty) const
00214 {
00215 Collection<TMBLeBob> lebobs=getLeBob(vars);
00216 int nsize=lebobs.size();
00217 for(int i=0; i<nsize; ++i){
00218 if(std::string(lebobs[i].algoname())==branchName) return &lebobs[i];
00219 }
00220 return 0;
00221 }
00223 const TMBLeBob* getJCCALeBob(const Variables& vars = cafe::detail::empty) const
00224 {
00225 return getTMBLeBob("JCCA", vars);
00226 }
00227
00229 const TMBLeBob* getJCCBLeBob(const Variables& vars = cafe::detail::empty) const
00230 {
00231 return getTMBLeBob("JCCB", vars);
00232 }
00233
00235 Collection<TMBParticleJet>
00236 getParticleJets(const std::string &branchName, const Variables& vars = cafe::detail::empty) const
00237 {
00238 return getCollection<TMBParticleJet>(branchName, vars);
00239 }
00240
00242 Collection<TMBParticleJet> getParticlesJCCA(const Variables& vars = cafe::detail::empty) const
00243 {
00244 return getParticleJets("particlesJCCA", vars);
00245 }
00246
00248 Collection<TMBParticleJet> getParticlesJCCB(const Variables& vars = cafe::detail::empty) const
00249 {
00250 return getParticleJets("particlesJCCB", vars);
00251 }
00252
00254 Collection<TMBTrack> getTracks(const Variables& vars = cafe::detail::empty) const
00255 {
00256 return getCollection<TMBTrack>("Track", vars);
00257 }
00258
00260 Collection<TMBIsoTrack> getIsoTracks(const Variables& vars = cafe::detail::empty) const
00261 {
00262 return getCollection<TMBIsoTrack>("IsoTrack", vars);
00263 }
00264
00266 Collection<TMBTau> getTaus(const Variables& vars = cafe::detail::empty) const
00267 {
00268 return getCollection<TMBTau>("Tau", vars);
00269 }
00270
00272 Collection<TMBPrimaryVertex> getPrimaryVertices(const Variables& vars = cafe::detail::empty) const
00273 {
00274 return getCollection<TMBPrimaryVertex>("PrimaryVertex", vars);
00275 }
00276
00277
00279 Collection<TMBPrimaryVertex> getPrimaryVertices(const std::string& type, const Variables& vars = cafe::detail::empty) const
00280 {
00281 return getCollection<TMBPrimaryVertex>("PrimaryVertex_" + type, vars);
00282 }
00283
00284
00286 Collection<TMBTrackCal> getTrackCals(const Variables& vars = cafe::detail::empty) const
00287 {
00288 return getCollection<TMBTrackCal>("TrackCal", vars);
00289 }
00290
00292 Collection<TMBTrackCalJet> getTrackCalJCCA(const Variables& vars = cafe::detail::empty) const
00293 {
00294 return getCollection<TMBTrackCalJet>("TrackCalJet_JCCA", vars);
00295 }
00296
00298 Collection<TMBTrackCalJet> getTrackCalJCCB(const Variables& vars = cafe::detail::empty) const
00299 {
00300 return getCollection<TMBTrackCalJet>("TrackCalJet_JCCB", vars);
00301 }
00302
00304 const TMBMet *getMet(const Variables& vars = cafe::detail::empty) const
00305 {
00306 return get<TMBMet>("Met", vars);
00307 }
00308
00310 const TMBMetEx *getMetEx(const Variables& vars = cafe::detail::empty) const
00311 {
00312 return get<TMBMetEx>("MetEx", vars);
00313 }
00314
00316 Collection<TMBCps> getCPS(const Variables& vars = cafe::detail::empty) const
00317 {
00318 return getCollection<TMBCps>("Cps", vars);
00319 }
00320
00322 Collection<TMBFps> getFPS(const Variables& vars = cafe::detail::empty) const
00323 {
00324 return getCollection<TMBFps>("Fps", vars);
00325 }
00326
00328 Collection<TMBFpd> getFPD(const Variables& vars = cafe::detail::empty) const
00329 {
00330 return getCollection<TMBFpd>("Fpd", vars);
00331 }
00332
00334
00339
00341
00342
00343 Collection<TMBBTag> getCSIP(const std::string& jetAlgo,
00344 const std::string& qual, const Variables& vars = cafe::detail::empty)
00345 {
00346 return getCollection<TMBBTag>("BTag_" + jetAlgo +
00347 "_CSIP_" + qual, vars);
00348 }
00349
00350
00351 Collection<TMBBTagSLT> getSLT(const std::string& jetAlgo,
00352 const std::string& qual, const Variables& vars = cafe::detail::empty)
00353 {
00354 return getCollection<TMBBTagSLT>("BTag_" + jetAlgo +
00355 "_SLT_" + qual, vars);
00356 }
00357
00358
00359 Collection<TMBBTagJLIP> getJLIP(const std::string& jetAlgo,
00360 const std::string& qual, const Variables& vars = cafe::detail::empty)
00361 {
00362 return getCollection<TMBBTagJLIP>("BTag_" + jetAlgo +
00363 "_JLIP_" + qual, vars);
00364 }
00365
00366 Collection<TMBBTagSVT> getSVT(const std::string& jetAlgo,
00367 const std::string& qual, const Variables& vars = cafe::detail::empty)
00368 {
00369 return getCollection<TMBBTagSVT>("BTag_" + jetAlgo +
00370 "_SVT_" + qual, vars);
00371 }
00372
00373 Collection<TMBBTagNN> getNN(const std::string& jetAlgo,
00374 const std::string& qual, const Variables& vars = cafe::detail::empty)
00375 {
00376 return getCollection<TMBBTagNN>("BTag_" + jetAlgo +
00377 "_NN_" + qual, vars);
00378 }
00379
00381
00383
00384
00386 const TMBMCevtInfo *getMCEventInfo(const Variables& vars = cafe::detail::empty) const
00387 {
00388 return get<TMBMCevtInfo>("MCevtInfo", vars);
00389 }
00390
00392 Collection<TMBMCvtx> getMCVertices(const Variables& vars = cafe::detail::empty) const
00393 {
00394 return getCollection<TMBMCvtx> ("MCvtx", vars);
00395 }
00396
00398 Collection<TMBMCpart> getMCParticles(const Variables& vars = cafe::detail::empty) const
00399 {
00400 return getCollection<TMBMCpart> ("MCpart", vars);
00401 }
00402
00404
00406
00408
00410 Collection<TMBTrigger> getTriggers(const Variables& vars = cafe::detail::empty) const
00411 {
00412 return getCollection<TMBTrigger>("Trigger", vars);
00413 }
00414
00415
00417 const TMBTrigBits *getTrigBits(const Variables& vars = cafe::detail::empty) const
00418 {
00419 return get<TMBTrigBits>("TrigBits", vars);
00420 }
00421
00423 const TMBL1AndOr *getL1AndOr(const Variables& vars = cafe::detail::empty) const
00424 {
00425 return get<TMBL1AndOr>("L1AndOr", vars);
00426 }
00427
00429 const TMBL1Names *getL1Names(const Variables& vars = cafe::detail::empty) const
00430 {
00431 return get<TMBL1Names>("L1Names", vars);
00432 }
00433
00435 const TMBL2Names *getL2Names(const Variables& vars = cafe::detail::empty) const
00436 {
00437 return get<TMBL2Names>("L2Names", vars);
00438 }
00439
00441 const TMBL1Cal *getL1Cal(const Variables& vars = cafe::detail::empty) const
00442 {
00443 return get<TMBL1Cal>("L1Cal", vars);
00444 }
00445
00446
00448 Collection<TMBL1CalTile> getL1CalTiles(const Variables& vars = cafe::detail::empty) const
00449 {
00450 return getCollection<TMBL1CalTile> ("L1CalTiles", vars);
00451 }
00452
00454 Collection<TMBL1CalTower> getL1CalTotalTowers(const Variables& vars = cafe::detail::empty) const
00455 {
00456 return getCollection<TMBL1CalTower> ("L1CalTotalTowers", vars);
00457 }
00458
00460 Collection<TMBL1CalTower> getL1CalEMTowers(const Variables& vars = cafe::detail::empty) const
00461 {
00462 return getCollection<TMBL1CalTower> ("L1CalEMTowers", vars);
00463 }
00464
00466 const TMBL1Muon *getL1Muon(const Variables& vars = cafe::detail::empty) const
00467 {
00468 return get<TMBL1Muon>("L1Muon", vars);
00469 }
00470
00472 const TMBL1CTT *getL1CTT(const Variables& vars = cafe::detail::empty) const
00473 {
00474 return get<TMBL1CTT>("L1CTT", vars);
00475 }
00476
00478 Collection<TMBL1toL2CTT> getL1toL2CTT(const Variables& vars = cafe::detail::empty) const
00479 {
00480 return getCollection<TMBL1toL2CTT>("L1toL2CTT", vars);
00481 }
00482
00484 Collection<TMBL1Track> getL1Tracks(const Variables& vars = cafe::detail::empty) const
00485 {
00486 return getCollection<TMBL1Track> ("L1Track", vars);
00487 }
00488
00489
00491 Collection<TMBL2CPS> getL2CPSs(const Variables& vars = cafe::detail::empty) const
00492 {
00493 return getCollection<TMBL2CPS> ("L2CPS", vars);
00494 }
00495
00497 Collection<TMBL2EM> getL2EMs(const Variables& vars = cafe::detail::empty) const
00498 {
00499 return getCollection<TMBL2EM> ("L2EM", vars);
00500 }
00501
00503 Collection<TMBL2Muon> getL2Muons(const Variables& vars = cafe::detail::empty) const
00504 {
00505 return getCollection<TMBL2Muon> ("L2Muon", vars);
00506 }
00507
00509 Collection<TMBL2Jet> getL2Jets(const Variables& vars = cafe::detail::empty) const
00510 {
00511 return getCollection<TMBL2Jet> ("L2Jet", vars);
00512 }
00513
00515 Collection<TMBL2Track> getL2STTPT(const Variables& vars = cafe::detail::empty) const
00516 {
00517 return getCollection<TMBL2Track> ("STTPT", vars);
00518 }
00519
00521 Collection<TMBL2Track> getL2STTIP(const Variables& vars = cafe::detail::empty) const
00522 {
00523 return getCollection<TMBL2Track> ("STTIP", vars);
00524 }
00525
00527 Collection<TMBL2Track> getL2CTT(const Variables& vars = cafe::detail::empty) const
00528 {
00529 return getCollection<TMBL2Track> ("CTT", vars);
00530 }
00531
00533 Collection<TMBL2GblJet> getL2GblJets(const Variables& vars = cafe::detail::empty) const
00534 {
00535 return getCollection<TMBL2GblJet> ("L2GblJet", vars);
00536 }
00537
00539 Collection<TMBL2GblEM> getL2GblEMs(const Variables& vars = cafe::detail::empty) const
00540 {
00541 return getCollection<TMBL2GblEM> ("L2GblEM", vars);
00542 }
00543
00545 Collection<TMBL2GblMuon> getL2GblMuons(const Variables& vars = cafe::detail::empty) const
00546 {
00547 return getCollection<TMBL2GblMuon> ("L2GblMuon", vars);
00548 }
00549
00551 Collection<TMBL2GblTrack> getL2GblTracks(const Variables& vars = cafe::detail::empty) const
00552 {
00553 return getCollection<TMBL2GblTrack> ("L2GblTrack", vars);
00554 }
00555
00557 Collection<TMBL2GblInvMass> getL2GblInvMass(const Variables& vars = cafe::detail::empty) const
00558 {
00559 return getCollection<TMBL2GblInvMass> ("L2GblInvMass", vars);
00560 }
00561
00563 Collection<TMBL2GblMJt> getL2GblMJts(const Variables& vars = cafe::detail::empty) const
00564 {
00565 return getCollection<TMBL2GblMJt> ("L2GblMJt", vars);
00566 }
00567
00569 Collection<TMBL2GblHt> getL2GblHts(const Variables& vars = cafe::detail::empty) const
00570 {
00571 return getCollection<TMBL2GblHt> ("L2GblHt", vars);
00572 }
00573
00574
00576 Collection<TMBL3BTagIP> getL3BTagIPs(const Variables& vars = cafe::detail::empty) const
00577 {
00578 return getCollection<TMBL3BTagIP> ("L3BTagIP", vars);
00579 }
00580
00582 Collection<TMBL3CFTVtx> getL3CFTVtxs(const Variables& vars = cafe::detail::empty) const
00583 {
00584 return getCollection<TMBL3CFTVtx> ("L3CFTVertex", vars);
00585 }
00586
00588 Collection<TMBL3Ele> getL3Eles(const Variables& vars = cafe::detail::empty) const
00589 {
00590 return getCollection<TMBL3Ele> ("L3Electron", vars);
00591 }
00592
00594 Collection<TMBL3IPTrack> getL3IPTracks(const Variables& vars = cafe::detail::empty) const
00595 {
00596 return getCollection<TMBL3IPTrack> ("L3IPTrack", vars);
00597 }
00598
00600 Collection<TMBL3Isolation> getL3Isolations(const Variables& vars = cafe::detail::empty) const
00601 {
00602 return getCollection<TMBL3Isolation> ("L3Isolation", vars);
00603 }
00604
00606 Collection<TMBL3Jet> getL3Jets(const Variables& vars = cafe::detail::empty) const
00607 {
00608 return getCollection<TMBL3Jet> ("L3Jet", vars);
00609 }
00610
00612 Collection<TMBL3Muon> getL3Muons(const Variables& vars = cafe::detail::empty) const
00613 {
00614 return getCollection<TMBL3Muon> ("L3Muon", vars);
00615 }
00616
00618 Collection<TMBL3Photon> getL3Photons(const Variables& vars = cafe::detail::empty) const
00619 {
00620 return getCollection<TMBL3Photon> ("L3Photon", vars);
00621 }
00622
00624 Collection<TMBL3Tau> getL3Taus(const Variables& vars = cafe::detail::empty) const
00625 {
00626 return getCollection<TMBL3Tau> ("L3Tau", vars);
00627 }
00628
00630 Collection<TMBL3Track> getL3Tracks(const Variables& vars = cafe::detail::empty) const
00631 {
00632 return getCollection<TMBL3Track> ("L3Track", vars);
00633 }
00634
00636 Collection<TMBL3MEt> getL3MEts(const Variables& vars = cafe::detail::empty) const
00637 {
00638 return getCollection<TMBL3MEt> ("L3MEt", vars);
00639 }
00640
00642
00644 const TMBCellContainer *getCaloCells(const Variables& vars = cafe::detail::empty) const
00645 {
00646 return get<TMBCellContainer>("CaloCells", vars);
00647 }
00648
00650 Collection<TMBLum> getLum(const Variables& vars = cafe::detail::empty) const
00651 {
00652 return getCollection<TMBLum>("Lum", vars);
00653 }
00654
00656 Collection<TMBLumV> getLumV(const Variables& vars = cafe::detail::empty) const
00657 {
00658 return getCollection<TMBLumV>("LumV", vars);
00659 }
00660
00662 Collection<TMBSimCAEP> getSimCAEP(const Variables& vars = cafe::detail::empty) const
00663 {
00664 return getCollection<TMBSimCAEP>("CAEP", vars);
00665 }
00666
00668 Collection<EventWeight> getEventWeights(const Variables& vars = cafe::detail::empty) const
00669 {
00670 return getCollection<EventWeight>("EventWeight", vars);
00671 }
00672
00674 Collection<TMBHiPt> getHiPt(const Variables& vars = cafe::detail::empty) const
00675 {
00676 return getCollection<TMBHiPt>("HiPt", vars);
00677 }
00678
00680 Collection<TMBFPDTrack> getFPDTrack(const Variables& vars = cafe::detail::empty) const
00681 {
00682 return getCollection<TMBFPDTrack>("FPDTrack", vars);
00683 }
00684
00685
00687 Collection<TMBTdc> getTdc(const Variables& vars = cafe::detail::empty) const
00688 {
00689 return getCollection<TMBTdc>("FPDTdc", vars);
00690 }
00691
00692 public:
00693 ClassDef(Event, 0);
00694 };
00695
00696 }
00697
00698 #endif // EVENT_HPP__