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 |
|
|
// string filename = "first20.root";
|
19 |
|
|
// string branchname = "PixelDigiedmDetSetVector_siPixelDigis__RP.";
|
20 |
|
|
|
21 |
|
|
string filename = "hlt.root";
|
22 |
|
|
string branchname = "PixelDigiedmDetSetVector_siPixelDigis__DigiToRawTest.";
|
23 |
|
|
|
24 |
|
|
|
25 |
|
|
//....load FWlite
|
26 |
|
|
gSystem->Load("libFWCoreFWLite");
|
27 |
|
|
AutoLibraryLoader::enable();
|
28 |
|
|
|
29 |
|
|
//....open file
|
30 |
|
|
TFile file(filename.data());
|
31 |
|
|
TTree * events = dynamic_cast<TTree *>(file.Get("Events") );
|
32 |
|
|
assert(events);
|
33 |
|
|
cout << "Nevents " << events->GetEntries() << endl;
|
34 |
|
|
|
35 |
|
|
//....connect branch to a local variable
|
36 |
|
|
TBranch* branch = events->GetBranch(branchname.data());
|
37 |
|
|
edm::Wrapper<edm::DetSetVector<PixelDigi> >* blah=0; //....zero is required
|
38 |
|
|
branch->SetAddress(&blah);
|
39 |
|
|
|
40 |
|
|
//....loop over events
|
41 |
|
|
for( int i=0; i<events->GetEntries(); i++){
|
42 |
|
|
if(i==1) break;
|
43 |
|
|
|
44 |
|
|
//....load data for this event
|
45 |
|
|
branch->GetEntry(i);
|
46 |
|
|
|
47 |
|
|
//....get pointer to the pixel data
|
48 |
|
|
const edm::DetSetVector<PixelDigi>* bprod=blah->product();
|
49 |
|
|
|
50 |
|
|
//....loop over detectors
|
51 |
|
|
edm::DetSetVector<PixelDigi>::const_iterator iter = bprod->begin(), iterEnd =bprod->end();
|
52 |
|
|
for(; iter != iterEnd; iter++){
|
53 |
|
|
//....loop over digis
|
54 |
|
|
edm::DetSet<PixelDigi>::const_iterator digi=iter->data.begin(), digiEnd=iter->data.end();
|
55 |
|
|
for(; digi != digiEnd; digi++){
|
56 |
|
|
cout << "event#=" << i << " "
|
57 |
|
|
<< "row=" << digi->row() << " "
|
58 |
|
|
<< "col=" << digi->column() << " "
|
59 |
|
|
<< "adc=" << digi->adc() << " "
|
60 |
|
|
<< endl;
|
61 |
|
|
|
62 |
|
|
}
|
63 |
|
|
}
|
64 |
|
|
}
|
65 |
|
|
}
|