CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h

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 /* #include "DataFormats/EgammaReco/interface/BasicCluster.h" */
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 // NEW
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   //  bool readFromRealData(int entry);
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   // protected:
00334 
00335   // expand environment variable in a string
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   /*   /// is inside cut G?  */
00361   /*   bool   insideGCut(double eta, double phi) const; */
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   /*   std::vector<int> getViewSizeEtaPhi() {return viewSizeEtaPhi_;} */
00397   /*   std::vector<int> getViewSize()       {return viewSize_;} */
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   // data members -------------------------------------------------------
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   // branches --------------------------
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   // egamma electrons
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   // algos --------------------------------------------------------
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   // ------------------- benchmarks -------------------------------
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   // Addition to have DQM histograms : by S. Dutta 
00747   PFJetMonitor   pfJetMonitor_;
00748   PFMETMonitor   pfMETMonitor_;
00749   bool           doPFDQM_;
00750   TFile*         dqmFile_;
00751   //-----------------------------------------------
00752 
00753   //----------------- print flags --------------------------------
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   // print MC truth matching with PFCandidate yes/no
00783   bool                     printMCTruthMatching_;
00784 
00786   int                      verbosity_;
00787 
00788   //----------------- filter ------------------------------------
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   // MC Truth tools              ---------------------------------------
00880 
00884   /*   TDatabasePDG*   pdgTable_; */
00885 
00886   // Needed for single particle calibration rootTuple
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