Go to the documentation of this file.00001 #ifndef RecoParticleFlow_PFRootEvent_PFRootEventManager_h
00002 #define RecoParticleFlow_PFRootEvent_PFRootEventManager_h
00003
00004 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00005
00006 #include "DataFormats/Provenance/interface/EventAuxiliary.h"
00007
00008 #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h"
00009 #include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h"
00010
00011 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
00012 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
00013
00014 #include "DataFormats/ParticleFlowReco/interface/PFTrajectoryPoint.h"
00015
00016 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h"
00017 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h"
00018 #include "DataFormats/TrackReco/interface/Track.h"
00019 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00020 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00021 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h"
00022 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h"
00023
00024 #include "DataFormats/ParticleFlowReco/interface/PFSimParticle.h"
00025 #include "DataFormats/ParticleFlowReco/interface/PFSimParticleFwd.h"
00026
00027 #include "DataFormats/ParticleFlowReco/interface/PFBlock.h"
00028 #include "DataFormats/ParticleFlowReco/interface/PFBlockFwd.h"
00029
00030 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
00031 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00032
00033 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateElectronExtra.h"
00034 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateElectronExtraFwd.h"
00035
00036 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00037 #include "DataFormats/MuonReco/interface/Muon.h"
00038
00039 #include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
00040 #include "DataFormats/EgammaCandidates/interface/Photon.h"
00041
00042 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedTrackerVertex.h"
00043
00044 #include "DataFormats/ParticleFlowReco/interface/PFConversion.h"
00045 #include "DataFormats/ParticleFlowReco/interface/PFConversionFwd.h"
00046 #include "DataFormats/ParticleFlowReco/interface/PFV0.h"
00047 #include "DataFormats/ParticleFlowReco/interface/PFV0Fwd.h"
00048
00049 #include "DataFormats/Candidate/interface/CandidateFwd.h"
00050 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
00051 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
00052 #include "CommonTools/CandUtils/interface/pdgIdUtils.h"
00053
00054
00055 #include "DataFormats/CaloTowers/interface/CaloTower.h"
00056 #include "DataFormats/CaloTowers/interface/CaloTowerFwd.h"
00057
00058 #include "RecoParticleFlow/PFClusterProducer/interface/PFClusterAlgo.h"
00059 #include "RecoParticleFlow/PFProducer/interface/PFBlockAlgo.h"
00060 #include "RecoParticleFlow/PFProducer/interface/PFAlgo.h"
00061
00062 #include "RecoParticleFlow/PFRootEvent/interface/PFJetAlgorithm.h"
00063 #include "RecoParticleFlow/Benchmark/interface/PFJetBenchmark.h"
00064 #include "RecoParticleFlow/Benchmark/interface/PFMETBenchmark.h"
00065 #include "DQMOffline/PFTau/interface/PFCandidateManager.h"
00066 #include "DQMOffline/PFTau/interface/PFJetMonitor.h"
00067 #include "DQMOffline/PFTau/interface/PFMETMonitor.h"
00068
00069 #include "RecoParticleFlow/PFRootEvent/interface/FWLiteJetProducer.h"
00070 #include "DataFormats/JetReco/interface/BasicJetCollection.h"
00071 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00072 #include "DataFormats/JetReco/interface/PFJet.h"
00073 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00074
00075 #include "DataFormats/METReco/interface/PFMETCollection.h"
00076 #include "DataFormats/METReco/interface/PFMET.h"
00077 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00078 #include "DataFormats/METReco/interface/CaloMET.h"
00079 #include "DataFormats/METReco/interface/METCollection.h"
00080 #include "DataFormats/METReco/interface/MET.h"
00081
00082
00083 #include "RecoParticleFlow/PFRootEvent/interface/METManager.h"
00084
00085
00086 #include <TObject.h>
00087 #include "TEllipse.h"
00088 #include "TBox.h"
00089
00090 #include <string>
00091 #include <map>
00092 #include <set>
00093 #include <vector>
00094 #include <memory>
00095 #include <iostream>
00096 #include <fstream>
00097
00098 class TTree;
00099 class TBranch;
00100 class TFile;
00101 class TCanvas;
00102 class TH2F;
00103 class TH1F;
00104
00105
00106 class IO;
00107
00108
00109 class PFBlockElement;
00110
00111 class EventColin;
00112 class PFEnergyCalibration;
00113 class PFEnergyCalibrationHF;
00114 class PFEnergyResolution;
00115
00116 namespace pftools {
00117 class PFClusterCalibration;
00118 }
00119
00120 class METManager;
00121
00122
00123 namespace fwlite {
00124 class ChainEvent;
00125 }
00126
00127 typedef std::pair<double, unsigned> simMatch;
00128 typedef std::list< std::pair<double, unsigned> >::iterator ITM;
00129
00131
00190 class PFRootEventManager {
00191
00192 public:
00193
00195 enum View_t { XY = 0, RZ = 1, EPE = 2, EPH = 3, NViews = 4 };
00196 enum Verbosity {SHUTUP = 0, VERBOSE};
00197
00199 PFRootEventManager();
00200
00202 PFRootEventManager(const char* file);
00203
00205 virtual ~PFRootEventManager();
00206
00207 void initializeEventInformation();
00208
00209 virtual void write();
00210
00212 void reset();
00213
00215 std::string getGenParticleName(int partId,std::string &latexStringName) const;
00216
00217
00220 void readOptions(const char* file,
00221 bool refresh=true,
00222 bool reconnect=false);
00223
00224
00225 virtual void readSpecificOptions(const char* file) {}
00226
00228 void connect(const char* infilename="");
00229
00230 int eventToEntry(int run, int lumi, int event) const;
00231
00233 virtual bool processEvent(int run, int lumi, int event);
00234
00236 virtual bool processEntry(int entry);
00237
00239 bool readFromSimulation(int entry);
00240
00242 bool isHadronicTau() const;
00243
00247 bool countChargedAndPhotons() const;
00248
00252 int chargeValue(const int& pdgId) const;
00253
00254
00256 void PreprocessRecTracks( reco::PFRecTrackCollection& rectracks);
00257 void PreprocessRecTracks( reco::GsfPFRecTrackCollection& rectracks);
00258
00260 void PreprocessRecHits( reco::PFRecHitCollection& rechits,
00261 bool findNeighbours);
00262
00266 void setRecHitNeigbours( reco::PFRecHit& rh,
00267 const std::map<unsigned, unsigned>& detId2index );
00268
00270
00271
00273 void clustering();
00274
00276 void particleFlow();
00277
00279 void pfCandCompare(int);
00280
00282 void reconstructGenJets();
00283
00285 void reconstructCaloJets();
00286
00288 void reconstructPFJets();
00289
00291 void reconstructFWLiteJets(const reco::CandidatePtrVector& Candidates,
00292 std::vector<ProtoJet>& output);
00293
00294 void mcTruthMatching( std::ostream& out,
00295 const reco::PFCandidateCollection& candidates,
00296 std::vector< std::list <simMatch> >& candSimMatchTrack,
00297 std::vector< std::list <simMatch> >& candSimMatchEcal) const;
00298
00302 double tauBenchmark( const reco::PFCandidateCollection& candidates);
00303
00304
00306 void fillOutEventWithClusters(const reco::PFClusterCollection& clusters);
00307
00309 void fillOutEventWithPFCandidates(const reco::PFCandidateCollection& pfCandidates );
00310
00312 void fillOutEventWithSimParticles(const reco::PFSimParticleCollection& ptcs);
00313
00315 void fillOutEventWithCaloTowers(const CaloTowerCollection& cts);
00316
00318 void fillOutEventWithBlocks(const reco::PFBlockCollection& blocks);
00319
00320
00321
00323 void print( std::ostream& out = std::cout,
00324 int maxNLines = -1 ) const;
00325
00327 void printMCCalib( std::ofstream& out ) const;
00328
00329
00331 TTree* tree() {return tree_;}
00332
00333
00334
00335
00336 std::string expand(const std::string& oldString) const;
00337
00339 void printRecHits(const reco::PFRecHitCollection& rechits,
00340 const PFClusterAlgo& clusterAlgo,
00341 std::ostream& out = std::cout) const;
00342
00343 void printRecHit(const reco::PFRecHit& rh, unsigned index,
00344 const char* seed=" ",
00345 std::ostream& out = std::cout) const;
00346
00348 void printClusters(const reco::PFClusterCollection& clusters,
00349 std::ostream& out = std::cout) const;
00350
00351 void printCluster(const reco::PFCluster& cluster,
00352 std::ostream& out = std::cout) const;
00353
00354
00356 void printGenParticles(std::ostream& out = std::cout,
00357 int maxNLines = -1) const;
00358
00359
00360
00361
00362
00364 bool trackInsideGCut( const reco::PFTrack& track ) const;
00365
00367 void fillRecHitMask( std::vector<bool>& mask,
00368 const reco::PFRecHitCollection& rechits ) const;
00369
00371 void fillClusterMask( std::vector<bool>& mask,
00372 const reco::PFClusterCollection& clusters ) const;
00373
00375 void fillTrackMask( std::vector<bool>& mask,
00376 const reco::PFRecTrackCollection& tracks ) const;
00377 void fillTrackMask( std::vector<bool>& mask,
00378 const reco::GsfPFRecTrackCollection& tracks ) const;
00379
00381 void fillPhotonMask (std::vector<bool>& mask,
00382 const reco::PhotonCollection& photons) const;
00383
00385 const reco::PFSimParticle&
00386 closestParticle( reco::PFTrajectoryPoint::LayerType layer,
00387 double eta, double phi,
00388 double& peta, double& pphi, double& pe) const;
00389
00390
00391 const reco::PFBlockCollection& blocks() const { return *pfBlocks_; }
00392
00393
00394 int eventNumber() {return iEvent_;}
00395
00396
00397
00398
00399 void readCMSSWJets();
00400
00402 bool eventAccepted() const;
00403
00405 bool highPtJet( double ptMin ) const;
00406
00408 bool highPtPFCandidate( double ptMin,
00409 reco::PFCandidate::ParticleType type = reco::PFCandidate::X) const;
00410
00412 edm::InputTag stringToTag(const std::vector< std::string >& tagname);
00413
00414
00416 int iEvent_;
00417
00419 IO* options_;
00420
00422 fwlite::ChainEvent* ev_;
00423
00425 TTree* tree_;
00426
00428 TTree* outTree_;
00429
00432 EventColin* outEvent_;
00433
00435 TH1F* h_deltaETvisible_MCEHT_;
00436
00438 TH1F* h_deltaETvisible_MCPF_;
00439
00440
00441
00442
00443
00444 TBranch* eventAuxiliaryBranch_;
00445
00447 edm::EventAuxiliary* eventAuxiliary_;
00448
00450 edm::Handle<reco::PFRecHitCollection> rechitsECALHandle_;
00451 edm::InputTag rechitsECALTag_;
00452 reco::PFRecHitCollection rechitsECAL_;
00453
00455 edm::Handle<reco::PFRecHitCollection> rechitsHCALHandle_;
00456 edm::InputTag rechitsHCALTag_;
00457 reco::PFRecHitCollection rechitsHCAL_;
00458
00460 edm::Handle<reco::PFRecHitCollection> rechitsHOHandle_;
00461 edm::InputTag rechitsHOTag_;
00462 reco::PFRecHitCollection rechitsHO_;
00463
00465 edm::Handle<reco::PFRecHitCollection> rechitsHFEMHandle_;
00466 edm::InputTag rechitsHFEMTag_;
00467 reco::PFRecHitCollection rechitsHFEM_;
00468
00470 edm::Handle<reco::PFRecHitCollection> rechitsHFHADHandle_;
00471 edm::InputTag rechitsHFHADTag_;
00472 reco::PFRecHitCollection rechitsHFHAD_;
00473
00475 std::vector< reco::PFRecHitCollection > rechitsCLEANEDV_;
00476 std::vector< edm::Handle<reco::PFRecHitCollection> > rechitsCLEANEDHandles_;
00477 std::vector< edm::InputTag > rechitsCLEANEDTags_;
00478 reco::PFRecHitCollection rechitsCLEANED_;
00479
00481 edm::Handle<reco::PFRecHitCollection> rechitsPSHandle_;
00482 edm::InputTag rechitsPSTag_;
00483 reco::PFRecHitCollection rechitsPS_;
00484
00486 edm::Handle<reco::PFClusterCollection> clustersECALHandle_;
00487 edm::InputTag clustersECALTag_;
00488 std::auto_ptr< reco::PFClusterCollection > clustersECAL_;
00489
00491 edm::Handle<reco::PFClusterCollection> clustersHCALHandle_;
00492 edm::InputTag clustersHCALTag_;
00493 std::auto_ptr< reco::PFClusterCollection > clustersHCAL_;
00494
00496 edm::Handle<reco::PFClusterCollection> clustersHOHandle_;
00497 edm::InputTag clustersHOTag_;
00498 std::auto_ptr< reco::PFClusterCollection > clustersHO_;
00499
00501 edm::Handle<reco::PFClusterCollection> clustersHFEMHandle_;
00502 edm::InputTag clustersHFEMTag_;
00503 std::auto_ptr< reco::PFClusterCollection > clustersHFEM_;
00504
00506 edm::Handle<reco::PFClusterCollection> clustersHFHADHandle_;
00507 edm::InputTag clustersHFHADTag_;
00508 std::auto_ptr< reco::PFClusterCollection > clustersHFHAD_;
00509
00511 edm::Handle<reco::PFClusterCollection> clustersPSHandle_;
00512 edm::InputTag clustersPSTag_;
00513 std::auto_ptr< reco::PFClusterCollection > clustersPS_;
00514
00516 edm::Handle<CaloTowerCollection> caloTowersHandle_;
00517 edm::InputTag caloTowersTag_;
00518 CaloTowerCollection caloTowers_;
00519
00523 reco::CandidatePtrVector caloTowersPtrs_;
00524
00525
00527 edm::Handle<reco::VertexCollection> primaryVerticesHandle_;
00528 edm::InputTag primaryVerticesTag_;
00529 reco::VertexCollection primaryVertices_;
00530
00532 edm::Handle<reco::PFRecTrackCollection> recTracksHandle_;
00533 edm::Handle<reco::PFRecTrackCollection> displacedRecTracksHandle_;
00534 edm::InputTag recTracksTag_;
00535 edm::InputTag displacedRecTracksTag_;
00536 reco::PFRecTrackCollection recTracks_;
00537 reco::PFRecTrackCollection displacedRecTracks_;
00538
00540 edm::Handle<reco::GsfPFRecTrackCollection> gsfrecTracksHandle_;
00541 edm::InputTag gsfrecTracksTag_;
00542 reco::GsfPFRecTrackCollection gsfrecTracks_;
00543
00544
00545 edm::Handle<reco::GsfElectronCollection> egammaElectronHandle_;
00546 edm::InputTag egammaElectronsTag_;
00547 reco::GsfElectronCollection egammaElectrons_;
00548
00550 edm::Handle<reco::GsfPFRecTrackCollection> convBremGsfrecTracksHandle_;
00551 edm::InputTag convBremGsfrecTracksTag_;
00552 reco::GsfPFRecTrackCollection convBremGsfrecTracks_;
00553
00555 edm::Handle<reco::TrackCollection> stdTracksHandle_;
00556 edm::InputTag stdTracksTag_;
00557 reco::TrackCollection stdTracks_;
00558
00560 edm::Handle<reco::MuonCollection> muonsHandle_;
00561 edm::InputTag muonsTag_;
00562 reco::MuonCollection muons_;
00563
00565 edm::Handle<reco::PFConversionCollection> conversionHandle_;
00566 edm::InputTag conversionTag_;
00567 reco::PFConversionCollection conversion_;
00568
00570 edm::Handle<reco::PhotonCollection> photonHandle_;
00571 edm::InputTag photonTag_;
00572 reco::PhotonCollection photons_;
00573
00575 reco::SuperClusterCollection ebsc_;
00576 reco::SuperClusterCollection eesc_;
00577
00579 edm::Handle<reco::PFV0Collection> v0Handle_;
00580 edm::InputTag v0Tag_;
00581 reco::PFV0Collection v0_;
00582
00584 edm::Handle<reco::PFDisplacedTrackerVertexCollection> pfNuclearTrackerVertexHandle_;
00585 edm::InputTag pfNuclearTrackerVertexTag_;
00586 reco::PFDisplacedTrackerVertexCollection pfNuclearTrackerVertex_;
00587
00589 edm::Handle<reco::PFSimParticleCollection> trueParticlesHandle_;
00590 edm::InputTag trueParticlesTag_;
00591 reco::PFSimParticleCollection trueParticles_;
00592
00594 edm::Handle<edm::HepMCProduct> MCTruthHandle_;
00595 edm::InputTag MCTruthTag_;
00596 edm::HepMCProduct MCTruth_;
00597
00599 edm::Handle<reco::GenParticleRefVector> genParticlesforJetsHandle_;
00600 edm::InputTag genParticlesforJetsTag_;
00601 reco::GenParticleRefVector genParticlesforJets_;
00602
00604 reco::GenJetCollection genJets_;
00605
00607 edm::Handle<reco::GenParticleCollection> genParticlesforMETHandle_;
00608 edm::InputTag genParticlesforMETTag_;
00609 reco::GenParticleCollection genParticlesCMSSW_;
00610
00614 reco::CandidatePtrVector genParticlesforJetsPtrs_;
00615
00617 std::auto_ptr< reco::PFBlockCollection > pfBlocks_;
00618
00620 std::auto_ptr< reco::PFCandidateCollection > pfCandidates_;
00621
00623 std::auto_ptr< reco::PFCandidateElectronExtraCollection > pfCandidateElectronExtras_;
00624
00629 reco::CandidatePtrVector pfCandidatesPtrs_;
00630
00632 reco::PFJetCollection pfJets_;
00633
00635 std::vector<ProtoJet> caloJets_;
00636
00638 edm::Handle<reco::PFJetCollection> pfJetsHandle_;
00639 edm::InputTag pfJetsTag_;
00640 reco::PFJetCollection pfJetsCMSSW_;
00641
00643 edm::Handle<reco::GenJetCollection> genJetsHandle_;
00644 edm::InputTag genJetsTag_;
00645 reco::GenJetCollection genJetsCMSSW_;
00646
00648 edm::Handle< std::vector<reco::CaloJet> >caloJetsHandle_;
00649 edm::InputTag caloJetsTag_;
00650 std::vector<reco::CaloJet> caloJetsCMSSW_;
00651
00653 edm::Handle< std::vector<reco::CaloJet> > corrcaloJetsHandle_;
00654 edm::InputTag corrcaloJetsTag_;
00655 std::vector<reco::CaloJet> corrcaloJetsCMSSW_;
00656
00658 reco::PFMETCollection pfMets_;
00659
00661 reco::CaloMETCollection caloMets_;
00662
00664 reco::METCollection tcMets_;
00665
00667 edm::Handle<reco::CaloMETCollection> caloMetsHandle_;
00668 edm::InputTag caloMetsTag_;
00669 reco::CaloMETCollection caloMetsCMSSW_;
00670
00672 edm::Handle<reco::METCollection> tcMetsHandle_;
00673 edm::InputTag tcMetsTag_;
00674 reco::METCollection tcMetsCMSSW_;
00675
00677 edm::Handle<reco::PFMETCollection> pfMetsHandle_;
00678 edm::InputTag pfMetsTag_;
00679 reco::PFMETCollection pfMetsCMSSW_;
00680
00682 edm::Handle<reco::PFCandidateCollection> pfCandidateHandle_;
00683 edm::InputTag pfCandidateTag_;
00684 reco::PFCandidateCollection pfCandCMSSW_;
00685
00687 TFile* file_;
00688
00690 std::vector<std::string> inFileNames_;
00691
00693 TFile* outFile_;
00694
00696 std::string outFileName_;
00697
00698
00699
00702 PFClusterAlgo clusterAlgoECAL_;
00703
00705 PFClusterAlgo clusterAlgoHCAL_;
00706
00708 PFClusterAlgo clusterAlgoHO_;
00709
00711 PFClusterAlgo clusterAlgoHFEM_;
00712
00714 PFClusterAlgo clusterAlgoHFHAD_;
00715
00717 PFClusterAlgo clusterAlgoPS_;
00718
00719
00721 PFBlockAlgo pfBlockAlgo_;
00722
00724 PFAlgo pfAlgo_;
00725
00726
00727
00729 PFJetBenchmark PFJetBenchmark_;
00730
00732 double MET1cut;
00733 double DeltaMETcut;
00734 double DeltaPhicut;
00735
00736 PFCandidateManager pfCandidateManager_;
00737 bool doPFCandidateBenchmark_;
00738
00741 PFJetAlgorithm jetAlgo_;
00742
00744 FWLiteJetProducer jetMaker_;
00745
00746
00747 PFJetMonitor pfJetMonitor_;
00748 PFMETMonitor pfMETMonitor_;
00749 bool doPFDQM_;
00750 TFile* dqmFile_;
00751
00752
00753
00754
00756 bool printRecHits_;
00757 double printRecHitsEMin_;
00758
00760 bool printClusters_;
00761 double printClustersEMin_;
00762
00764 bool printPFBlocks_;
00765
00767 bool printPFCandidates_;
00768 double printPFCandidatesPtMin_;
00769
00771 bool printPFJets_;
00772 double printPFJetsPtMin_;
00773
00775 bool printSimParticles_;
00776 double printSimParticlesPtMin_;
00777
00779 bool printGenParticles_;
00780 double printGenParticlesPtMin_;
00781
00782
00783 bool printMCTruthMatching_;
00784
00786 int verbosity_;
00787
00788
00789
00790 unsigned filterNParticles_;
00791
00792 bool filterHadronicTaus_;
00793
00794 std::vector<int> filterTaus_;
00795
00796
00797
00800 bool doClustering_;
00801
00803 bool doParticleFlow_;
00804
00806 bool doCompare_;
00807
00809 bool useKDTreeTrackEcalLinker_;
00810
00812 bool doJets_;
00813
00815 bool doMet_;
00816
00818 bool JECinCaloMet_;
00819
00821 int jetAlgoType_;
00822
00824 bool doTauBenchmark_;
00825
00827 bool tauBenchmarkDebug_;
00828
00830 bool doPFJetBenchmark_;
00831
00833 bool doPFMETBenchmark_;
00834
00836 bool debug_;
00837
00839 bool findRecHitNeighbours_;
00840
00841
00843 bool jetsDebug_;
00844
00845
00847 bool fastsim_;
00848
00850 bool usePFConversions_;
00851
00853 bool usePFV0s_;
00854
00856 bool usePFNuclearInteractions_;
00857
00859 bool useConvBremGsfTracks_;
00860
00862 bool useConvBremPFRecTracks_;
00863
00865 bool useEGPhotons_;
00866
00868 bool usePFElectrons_;
00869
00871 bool useEGElectrons_;
00872
00874 bool useAtHLT_;
00875
00877 bool useHO_;
00878
00879
00880
00884
00885
00886
00887 boost::shared_ptr<pftools::PFClusterCalibration> clusterCalibration_;
00888 boost::shared_ptr<PFEnergyCalibration> calibration_;
00889 boost::shared_ptr<PFEnergyCalibrationHF> thepfEnergyCalibrationHF_;
00890
00891 std::ofstream* calibFile_;
00892
00893 std::auto_ptr<METManager> metManager_;
00894
00895 typedef std::map<int, int> EventToEntry;
00896 typedef std::map<int, EventToEntry> LumisMap;
00897 typedef std::map<int, LumisMap> RunsMap;
00898 RunsMap mapEventToEntry_;
00899 };
00900 #endif