ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/wright/test/ex1.cc
Revision: 1.2
Committed: Tue Mar 27 00:18:48 2007 UTC (18 years, 1 month ago) by wright
Content type: text/plain
Branch: MAIN
Changes since 1.1: +52 -25 lines
Log Message:
none

File Contents

# User Rev Content
1 wright 1.1 #include <TSystem.h>
2     #include <TFile.h>
3     #include <TTree.h>
4    
5     //....for AutoLibraryLoader, requires <use name=FWCore/FWLite> in BuildFile
6     #include "FWCore/FWLite/src/AutoLibraryLoader.h"
7    
8     //....for SiPixelDigis, requires <use name=DataFormats/SiPixelDigi> in BuildFile
9     #include "DataFormats/Common/interface/DetSetVector.h"
10     #include "DataFormats/SiPixelDigi/interface/PixelDigi.h"
11    
12     using namespace std;
13    
14     int main()
15     {
16    
17     //....chose data to look at
18 wright 1.2 string filename1 = "first20.root";
19     string branchname1 = "PixelDigiedmDetSetVector_siPixelDigis__RP.";
20 wright 1.1
21 wright 1.2 string filename2 = "hlt.root";
22     string branchname2 = "PixelDigiedmDetSetVector_siPixelDigis__DigiToRawTest.";
23 wright 1.1
24     //....load FWlite
25     gSystem->Load("libFWCoreFWLite");
26     AutoLibraryLoader::enable();
27    
28 wright 1.2 //....open files
29     TFile file1(filename1.data());
30     TFile file2(filename2.data());
31    
32     // TTree* events1 = dynamic_cast<TTree *>(file1.Get("Events") );
33     // TTree* events2 = dynamic_cast<TTree *>(file2.Get("Events") );
34    
35     TTree* events1 = (TTree*)file1.Get("Events");
36     TTree* events2 = (TTree*)file2.Get("Events");
37    
38     //....quit if either file has no data
39     assert(events1);
40     assert(events2);
41    
42     cout << "Nevents in "
43     << "file1=" << events1->GetEntries() << " "
44     << "file2=" << events2->GetEntries() << " "
45     << endl;
46 wright 1.1
47     //....connect branch to a local variable
48 wright 1.2 TBranch* branch1 = events1->GetBranch(branchname1.data());
49     TBranch* branch2 = events2->GetBranch(branchname2.data());
50    
51    
52     edm::Wrapper<edm::DetSetVector<PixelDigi> >* pixelvec1=0; //....zero is required
53     edm::Wrapper<edm::DetSetVector<PixelDigi> >* pixelvec2=0; //....zero is required
54    
55     branch1->SetAddress(&pixelvec1);
56     branch2->SetAddress(&pixelvec2);
57 wright 1.1
58     //....loop over events
59 wright 1.2 for( int i=0; i<events1->GetEntries(); i++){
60    
61     //...if file2 runs out of events, stop
62     if( !(i< events2->GetEntries())){ break;}
63 wright 1.1
64     //....load data for this event
65 wright 1.2 branch1->GetEntry(i);
66     branch2->GetEntry(i);
67 wright 1.1
68     //....get pointer to the pixel data
69 wright 1.2 const edm::DetSetVector<PixelDigi>* list1=pixelvec1->product();
70     const edm::DetSetVector<PixelDigi>* list2=pixelvec2->product();
71    
72     //....loop over DetSetVector lists
73     edm::DetSetVector<PixelDigi>::const_iterator iter = list1->begin(), iterEnd =list1->end();
74     edm::DetSetVector<PixelDigi>::const_iterator iter2 = list2->begin();
75 wright 1.1
76     for(; iter != iterEnd; iter++){
77     //....loop over digis
78     edm::DetSet<PixelDigi>::const_iterator digi=iter->data.begin(), digiEnd=iter->data.end();
79 wright 1.2 edm::DetSet<PixelDigi>::const_iterator digi2=iter2->data.begin();
80    
81 wright 1.1 for(; digi != digiEnd; digi++){
82 wright 1.2 cout << "event#=" << i << " "
83     << "row=" << digi->row() << " " << digi2->row() << " "
84     << "col=" << digi->column() << " " << digi2->column() << " "
85     << "adc=" << digi->adc() << " " << digi2->adc() << " "
86     << endl;
87     digi2++;
88 wright 1.1 }
89 wright 1.2 iter2++;
90 wright 1.1 }
91     }
92     }