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

File Contents

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