ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/L1Menu/interface/L1UpgradeNtuple.h
Revision: 1.1
Committed: Thu Jun 6 15:05:03 2013 UTC (11 years, 11 months ago) by grimes
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:
Improved memory performance. Had to copy L1UpgradeNtuple.C into this package to fix some leaks.

File Contents

# User Rev Content
1 grimes 1.1 #ifndef L1UpgradeNtuple_h
2     #define L1UpgradeNtuple_h
3    
4     /** @file Copy of UserCode/L1TriggerUpgrade/macros/L1UpgradeNtuple.C with minor changes to fix memory leakes.
5     *
6     * I need to use L1UpgradeNtuple, but it's in the macros directory of UserCode/L1TriggerUpgrade so I
7     * can't include it using the standard "use" directive in a buildfile. I was previously incorporating
8     * it with an #include directive so save having to potentially out of synch copies. I found some
9     * memory leaks however so needed to change it, hence made another copy here.
10     *
11     * I'll just have to make a special effort to keep it up to date with the version in UserCode/L1TriggerUpgrade.
12     *
13     * @author Copied over into this file by Mark Grimes, but original code probably by Brian Winer.
14     * @date Copied here 06/Jun/2013
15     */
16    
17     #include <string>
18     #include <vector>
19     #include "Rtypes.h"
20    
21     //
22     // Forward declarations
23     //
24     class TChain;
25     class TFile;
26     namespace L1Analysis
27     {
28     class L1AnalysisEventDataFormat;
29     class L1AnalysisGCTDataFormat;
30     class L1AnalysisGMTDataFormat;
31     class L1AnalysisGTDataFormat;
32     class L1AnalysisRCTDataFormat;
33     class L1AnalysisDTTFDataFormat;
34     class L1AnalysisCSCTFDataFormat;
35     class L1AnalysisCaloTPDataFormat;
36     class L1AnalysisEventDataFormat;
37     class L1AnalysisGCTDataFormat;
38     class L1AnalysisGMTDataFormat;
39     class L1AnalysisGTDataFormat;
40     class L1AnalysisRCTDataFormat;
41     class L1AnalysisDTTFDataFormat;
42     class L1AnalysisCSCTFDataFormat;
43     class L1AnalysisCaloTPDataFormat;
44     class L1AnalysisRecoMetDataFormat;
45     class L1AnalysisRecoMuonDataFormat;
46     class L1AnalysisRecoJetDataFormat;
47     class L1AnalysisRecoClusterDataFormat;
48     class L1AnalysisRecoClusterDataFormat;
49     class L1AnalysisRecoVertexDataFormat;
50     class L1AnalysisRecoTrackDataFormat;
51     class L1AnalysisL1ExtraDataFormat;
52     class L1AnalysisL1ExtraDataFormat;
53     class L1AnalysisL1MenuDataFormat;
54     class L1AnalysisL1ExtraUpgradeDataFormat;
55     class L1AnalysisSimulationDataFormat;
56     class L1AnalysisGeneratorDataFormat;
57     }
58    
59    
60     class L1UpgradeNtuple
61     {
62     public:
63     TChain *fChain; //!pointer to the analyzed TTree or TChain
64     TChain *ftreeEmu;
65     TChain *ftreemuon;
66     TChain *ftreereco;
67     TChain *ftreeExtra;
68     TChain *ftreeMenu;
69     TChain *ftreeEmuExtra;
70     TChain *ftreeUpgrade;
71     Int_t fCurrent; //!current Tree number in a TChain
72    
73     bool dol1emu;
74     bool doreco;
75     bool domuonreco;
76     bool dol1extra;
77     bool dol1emuextra;
78     bool dol1menu;
79     bool dol1upgrade;
80    
81     // L1Tree (Standard)
82     L1Analysis::L1AnalysisEventDataFormat *event_;
83     L1Analysis::L1AnalysisGCTDataFormat *gct_;
84     L1Analysis::L1AnalysisGMTDataFormat *gmt_;
85     L1Analysis::L1AnalysisGTDataFormat *gt_;
86     L1Analysis::L1AnalysisRCTDataFormat *rct_;
87     L1Analysis::L1AnalysisDTTFDataFormat *dttf_;
88     L1Analysis::L1AnalysisCSCTFDataFormat *csctf_;
89     L1Analysis::L1AnalysisCaloTPDataFormat *calo_;
90    
91     // L1Tree (ReEmulated)
92     L1Analysis::L1AnalysisEventDataFormat *eventEmu_;
93     L1Analysis::L1AnalysisGCTDataFormat *gctEmu_;
94     L1Analysis::L1AnalysisGMTDataFormat *gmtEmu_;
95     L1Analysis::L1AnalysisGTDataFormat *gtEmu_;
96     L1Analysis::L1AnalysisRCTDataFormat *rctEmu_;
97     L1Analysis::L1AnalysisDTTFDataFormat *dttfEmu_;
98     L1Analysis::L1AnalysisCSCTFDataFormat *csctfEmu_;
99     L1Analysis::L1AnalysisCaloTPDataFormat *caloEmu_;
100    
101     // Reco Trees
102     L1Analysis::L1AnalysisRecoMetDataFormat *recoMet_;
103     L1Analysis::L1AnalysisRecoMuonDataFormat *recoMuon_;
104     L1Analysis::L1AnalysisRecoJetDataFormat *recoJet_;
105     L1Analysis::L1AnalysisRecoClusterDataFormat *recoBasicCluster_;
106     L1Analysis::L1AnalysisRecoClusterDataFormat *recoSuperCluster_;
107     L1Analysis::L1AnalysisRecoVertexDataFormat *recoVertex_;
108     L1Analysis::L1AnalysisRecoTrackDataFormat *recoTrack_;
109    
110     // L1 Extra Trees (Standard and ReEmulated)
111     L1Analysis::L1AnalysisL1ExtraDataFormat *l1extra_;
112     L1Analysis::L1AnalysisL1ExtraDataFormat *l1emuextra_;
113    
114     // L1 Menu
115     L1Analysis::L1AnalysisL1MenuDataFormat *l1menu_;
116    
117     // L1ExtraUpgrade Tree
118     L1Analysis::L1AnalysisL1ExtraUpgradeDataFormat *l1upgrade_;
119    
120     // Monte Carlo Information
121     L1Analysis::L1AnalysisSimulationDataFormat *sim_;
122     L1Analysis::L1AnalysisGeneratorDataFormat *gen_;
123    
124     L1UpgradeNtuple();
125     L1UpgradeNtuple( const std::string & fname );
126    
127     virtual ~L1UpgradeNtuple();
128    
129     bool Open( const std::string & fname );
130     bool OpenWithList( const std::string & fname );
131     virtual Int_t GetEntry( Long64_t entry );
132     virtual Long64_t LoadTree( Long64_t entry );
133     virtual void Init();
134     //virtual void Loop();
135     // Don't need these for now
136     //void Test();
137     //void Test2();
138     Long64_t GetEntries();
139    
140     private:
141     bool CheckFirstFile();
142     bool OpenWithoutInit();
143     bool OpenNtupleList( const std::string & fname );
144    
145     std::vector<std::string> listNtuples;
146     Long64_t nentries_;
147     TFile* rf;
148     };
149    
150     #endif