ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/CMSSW/Alignment/CommonAlignmentAlgorithm/src/AlignableDataIORoot.cc
Revision: 1.6
Committed: Mon Nov 26 10:23:41 2007 UTC (17 years, 5 months ago) by cklae
Content type: text/plain
Branch: MAIN
CVS Tags: CMSSW_4_1_8_patch13, CMSSW_4_1_8_patch11, CMSSW_4_1_8_patch10, CMSSW_4_1_8_patch8, CMSSW_4_1_8_patch7, CMSSW_4_1_8_patch6, CMSSW_4_1_8_patch5, CMSSW_4_1_8_patch4, CMSSW_4_1_8_patch1, CMSSW_4_1_8, CMSSW_4_1_7_patch3, CMSSW_4_1_7_patch2, CMSSW_4_1_7_patch1, CMSSW_4_1_7, CMSSW_4_1_6_patch1, CMSSW_4_1_6, CMSSW_4_1_4_patch4, CMSSW_4_1_5, CMSSW_4_1_4_patch3, CMSSW_4_1_4_patch2, CMSSW_4_1_4_patch1, CMSSW_4_1_4, CMSSW_4_1_3_patch2, CMSSW_4_1_3, CMSSW_4_1_2_patch1, CMSSW_4_1_2, CMSSW_3_11_3, CMSSW_3_11_2, CMSSW_3_11_1_hltpatch1, CMSSW_3_11_1_hclpatch1, CMSSW_3_11_1_patch3, CMSSW_3_9_9_patch1, CMSSW_3_9_9, CMSSW_3_11_1_patch2, CMSSW_4_2_0_pre4, CMSSW_3_11_1_patch1, CMSSW_4_2_0_pre3, CMSSW_3_11_1, CMSSW_3_9_8_patch2, CMSSW_4_2_0_pre2, CMSSW_3_9_8_patch1, CMSSW_3_9_8, CMSSW_4_2_0_pre1, CMSSW_3_11_0, CMSSW_3_10_1, CMSSW_3_11_0_pre4, CMSSW_3_11_0_pre5, CMSSW_3_11_0_pre3, CMSSW_3_11_0_pre2, CMSSW_3_9_7, CMSSW_3_10_0, CMSSW_3_9_6, CMSSW_3_8_7_patch1, CMSSW_3_11_0_pre1, CMSSW_3_10_0_pre9, V03-03-05, CMSSW_3_9_5_patch2, CMSSW_3_10_0_pre8, CMSSW_3_10_0_pre7g494c1, CMSSW_3_9_5_patch1, CMSSW_3_10_0_pre7, CMSSW_3_8_7, CMSSW_3_9_5, CMSSW_3_10_0_pre6, CMSSW_3_9_4, V03-03-04, CMSSW_3_10_0_pre5, CMSSW_3_9_3, CMSSW_3_9_2_patch5, CMSSW_3_10_0_pre4, CMSSW_3_9_2_patch4, CMSSW_3_8_6_patch1, CMSSW_3_9_2_patch3, CMSSW_3_9_2_patch2, CMSSW_3_9_2_patch1, CMSSW_3_9_2, CMSSW_3_10_0_pre3, CMSSW_3_8_6, CMSSW_3_9_1_patch1, CMSSW_3_9_1, CMSSW_3_10_0_pre2, CMSSW_3_8_5_patch3, V03-03-03, CMSSW_3_10_0_pre1, CMSSW_3_8_5_patch2, CMSSW_3_8_5_patch1, CMSSW_3_9_0, CMSSW_3_9_0_pre7, CMSSW_3_8_4_patch4, CMSSW_3_8_5, V03-03-02, CMSSW_3_9_0_pre6, CMSSW_3_8_4_patch3, CMSSW_3_9_0_pre5, CMSSW_3_8_4_patch2, CMSSW_3_8_4_patch1, CMSSW_3_9_0_pre4, CMSSW_3_8_4, CMSSW_3_8_3, V03-03-01, CMSSW_3_8_2_patch1, CMSSW_3_6_3_SLHC1, CMSSW_3_9_0_pre3, CMSSW_3_8_1_patch4, CMSSW_3_8_2, CMSSW_3_8_1_patch3, CMSSW_3_6_1_patch7, CMSSW_3_9_0_pre2, CMSSW_3_6_3_hltpatch4, CMSSW_3_8_1_patch2, CMSSW_3_8_1_patch1, CMSSW_3_7_1, CMSSW_3_8_1, CMSSW_3_6_3_patch2, CMSSW_3_9_0_pre1, CMSSW_3_8_0_patch1, CMSSW_3_8_0, CMSSW_3_6_1_patch6, CMSSW_3_8_0_pre8, CMSSW_3_8_0_pre7, CMSSW_3_8_0_pre6, CMSSW_3_6_3_patch1, CMSSW_3_7_0_patch4, CMSSW_3_7_0_patch3, CMSSW_3_8_0_pre5, CMSSW_3_6_1_patch5, CMSSW_3_8_0_pre4, CMSSW_3_6_3, CMSSW_3_8_0_pre2, CMSSW_3_7_0_patch2, CMSSW_3_6_2, CMSSW_3_7_0_patch1, CMSSW_3_8_0_pre1, CMSSW_3_6_1_patch4, CMSSW_3_7_0, CMSSW_3_6_1_patch3, CMSSW_3_5_7_hltpatch4, CMSSW_3_7_0_pre5, CMSSW_3_6_1_patch1, CMSSW_3_5_8_patch4, CMSSW_3_7_0_pre4, CMSSW_3_6_1, CMSSW_3_7_0_pre3, CMSSW_3_6_0_patch2, CMSSW_3_6_0_patch1, CMSSW_3_5_8_patch3, CMSSW_3_5_8_patch2, CMSSW_3_5_8_patch1, CMSSW_3_7_0_pre2, CMSSW_3_5_8, CMSSW_3_7_0_pre1, CMSSW_3_5_7, CMSSW_3_6_0, V03-02-03, CMSSW_3_6_0_pre6, CMSSW_3_6_0_pre5, CMSSW_3_5_6_patch1, CMSSW_3_5_6, CMSSW_3_5_4_patch2, CMSSW_3_5_5, CMSSW_3_6_0_pre4, CMSSW_3_5_4_patch1, CMSSW_3_6_0_pre3, CMSSW_3_5_4, CMSSW_3_5_3, CMSSW_3_6_0_pre2, CMSSW_3_5_2_patch2, CMSSW_3_5_2_patch1, CMSSW_3_6_0_pre1, V03-02-02, CMSSW_3_5_2, CMSSW_3_5_1_patch1, CMSSW_3_3_6_patch4, CMSSW_3_3_6_patch6, CMSSW_3_5_0_patch1, CMSSW_3_4_2_patch1, CMSSW_3_5_1, CMSSW_3_4_2, CMSSW_3_5_0, CMSSW_3_3_6_patch5, CMSSW_3_5_0_pre5, CMSSW_3_3_6_patch3, CMSSW_3_3_3_TSG, CMSSW_3_5_0_pre3, CMSSW_3_5_0_pre2, CMSSW_3_4_1, CMSSW_3_4_0, CMSSW_3_3_6_patch2, CMSSW_3_3_6_patch1, CMSSW_3_5_0_pre1, CMSSW_3_3_6, CMSSW_3_4_0_pre7, CMSSW_3_3_5, CMSSW_3_4_0_pre6, CMSSW_3_3_4, CMSSW_3_3_3_patch1, CMSSW_3_3_3, V03-02-01, CMSSW_3_4_0_pre5, CMSSW_3_4_0_pre4, CMSSW_3_3_2, CMSSW_3_4_0_pre3, CMSSW_3_3_1, CMSSW_3_4_0_pre2, CMSSW_3_2_8, CMSSW_3_2_7, V03-02-00, CMSSW_3_3_0, CMSSW_3_4_0_pre1, CMSSW_3_1_4, V03-01-04, CMSSW_3_3_0_pre6, V03-01-03, CMSSW_3_3_0_pre5, CMSSW_3_1_3, CMSSW_3_3_0_pre4, CMSSW_3_3_0_pre3, CMSSW_3_3_0_pre2, CMSSW_3_2_6, CMSSW_3_3_0_pre1, CMSSW_3_2_5, CMSSW_3_2_4, CMSSW_3_2_3, V03-01-02, CMSSW_3_2_2_patch2, CMSSW_3_2_2_patch1, CMSSW_3_2_2, CMSSW_3_1_2, CMSSW_3_2_1, CMSSW_3_2_0, CMSSW_3_1_1, CMSSW_2_2_13_offpatch1, CMSSW_3_1_0_patch1, CMSSW_3_1_0, CMSSW_3_1_0_pre11, V03-01-01, CMSSW_3_1_0_pre10, CMSSW_2_2_13_HLT, CMSSW_2_2_13, CMSSW_2_2_12_HLT, CMSSW_2_2_12, CMSSW_3_1_0_pre9, CMSSW_3_1_0_pre8, CMSSW_2_2_11_offpatch1, CMSSW_2_2_11, CMSSW_2_2_11_HLT, CMSSW_3_1_0_pre7, CMSSW_2_2_10_HLT, V03-01-00, CMSSW_2_2_10, V03-00-05, V03-00-04, CMSSW_2_2_9, CMSSW_3_1_0_pre6, V03-00-03, CMSSW_2_1_19, CMSSW_2_2_8, CMSSW_3_1_0_pre5, V03-00-02, V03-00-00, CMSSW_2_2_7, V02-04-00, CMSSW_3_1_0_pre4, CMSSW_2_2_6_HLT, CMSSW_2_2_6, CMSSW_3_1_0_pre3, V02-03-05, CMSSW_3_1_0_pre2, V02-03-04, CMSSW_3_0_0_pre10, CMSSW_2_2_5, CMSSW_3_0_0_pre9, CMSSW_3_1_0_pre1, CMSSW_2_2_4, CMSSW_3_0_0_pre8, V02-03-03, CMSSW_3_0_0_pre7, V02-03-02, CMSSW_3_0_0_pre6, CMSSW_3_0_0_pre5, CMSSW_3_0_0_pre4, V02-03-01, CMSSW_2_2_3, CMSSW_3_0_0_pre3, CMSSW_2_2_2, CMSSW_2_2_1, CMSSW_2_2_0, CMSSW_2_1_17, CMSSW_3_0_0_pre2, CMSSW_2_2_0_pre1, CMSSW_2_1_12, CMSSW_3_0_0_pre1, CMSSW_2_1_11, CMSSW_2_1_10_patch2, CMSSW_2_1_10_patch1, CMSSW_2_1_10, CMSSW_2_1_9, CMSSW_2_1_8, CMSSW_2_1_7, V02-03-00, CMSSW_2_1_6, CMSSW_2_1_5, CMSSW_2_1_4, CMSSW_2_1_3, CMSSW_2_1_2, CMSSW_2_1_1, CMSSW_2_1_0, CMSSW_2_0_12, CMSSW_2_1_0_pre11, CMSSW_2_1_0_pre10, CMSSW_2_1_0_pre9, CMSSW_2_1_0_pre8, CMSSW_2_0_11, CMSSW_2_1_0_pre7, CMSSW_2_0_10, CMSSW_2_1_0_pre6, CMSSW_2_0_9, CMSSW_2_1_0_pre5, CMSSW_2_0_8, CMSSW_2_1_0_pre4, CMSSW_2_0_7, CMSSW_2_0_6, CMSSW_2_0_5, CMSSW_2_1_0_pre3, V02-02-05, CMSSW_2_0_4, CMSSW_2_0_3, V02-02-04, CMSSW_2_0_2, CMSSW_2_0_1, CMSSW_2_1_0_pre2, V02-02-03, CMSSW_2_0_0, CMSSW_2_1_0_pre1, CMSSW_1_8_4, CMSSW_2_0_0_pre9, CMSSW_2_0_0_pre8, V02-02-02, CMSSW_1_8_3, CMSSW_2_0_0_pre7, CMSSW_1_8_2, CMSSW_2_0_0_pre6, CMSSW_2_0_0_pre5, CMSSW_1_8_1, CMSSW_2_0_0_pre4, CMSSW_1_8_0, CMSSW_2_0_0_pre3, CMSSW_1_8_0_pre10, CMSSW_1_8_0_pre9, V02-02-01, V02-02-00, V02-01-02, V02-00-02-01, V02-01-01, V02-01-00, CMSSW_2_0_0_pre2, CMSSW_2_0_0_pre1, CMSSW_1_8_0_pre8, CMSSW_1_8_0_pre7, CMSSW_1_8_0_pre6, CMSSW_1_8_0_pre5, CMSSW_1_8_0_pre4, V02-00-02, CMSSW_1_8_0_pre3a, V02-00-01
Changes since 1.5: +1 -1 lines
Log Message:
Store Alignable ID as unsigned int in ROOT to avoid warning.

File Contents

# User Rev Content
1 cklae 1.5 #include "TTree.h"
2    
3     #include "Alignment/CommonAlignment/interface/Alignable.h"
4 fronga 1.1 #include "FWCore/MessageLogger/interface/MessageLogger.h"
5    
6     #include "Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIORoot.h"
7    
8     // ----------------------------------------------------------------------------
9     // constructor
10     AlignableDataIORoot::AlignableDataIORoot(PosType p) :
11     AlignableDataIO(p)
12     {
13     if (thePosType == Abs) {
14     treename = "AlignablesAbsPos";
15     treetxt = "Alignables abs.Pos";
16     }
17     else if (thePosType == Org) {
18     treename = "AlignablesOrgPos";
19     treetxt = "Alignables org.Pos";
20     }
21     else if (thePosType == Rel) {
22     treename = "AlignablesRelPos";
23     treetxt = "Alignables rel.Pos";
24     }
25     }
26    
27     // ----------------------------------------------------------------------------
28     // create root tree branches (for writing)
29    
30     void AlignableDataIORoot::createBranches(void)
31     {
32 cklae 1.6 tree->Branch("Id", &Id, "Id/i");
33 fronga 1.1 tree->Branch("ObjId", &ObjId, "ObjId/I");
34     tree->Branch("Pos", &Pos, "Pos[3]/D");
35     tree->Branch("Rot", &Rot, "Rot[9]/D");
36     }
37    
38     // ----------------------------------------------------------------------------
39     // set root tree branch addresses (for reading)
40    
41     void AlignableDataIORoot::setBranchAddresses(void)
42     {
43     tree->SetBranchAddress("Id", &Id);
44     tree->SetBranchAddress("ObjId", &ObjId);
45     tree->SetBranchAddress("Pos", &Pos);
46     tree->SetBranchAddress("Rot", &Rot);
47     }
48    
49     // ----------------------------------------------------------------------------
50     // find root tree entry based on IDs
51    
52 cklae 1.5 int AlignableDataIORoot::findEntry(align::ID id, align::StructureType comp)
53 fronga 1.1 {
54     if (newopen) { // we're here first time
55 flucke 1.2 edm::LogInfo("Alignment") << "@SUB=AlignableDataIORoot::findEntry"
56     << "Filling map ...";
57 fronga 1.1 treemap.erase(treemap.begin(),treemap.end());
58     for (int ev = 0;ev<tree->GetEntries();ev++) {
59     tree->GetEntry(ev);
60     treemap[ std::make_pair(Id,ObjId) ] = ev;
61     }
62     newopen=false;
63     }
64    
65     // now we have filled the map
66 cklae 1.5 treemaptype::iterator imap = treemap.find( std::make_pair(id,comp) );
67 fronga 1.1 int result=-1;
68     if (imap != treemap.end()) result=(*imap).second;
69     return result;
70    
71     }
72    
73     // ----------------------------------------------------------------------------
74 flucke 1.3 int AlignableDataIORoot::writeAbsRaw(const AlignableAbsData &ad)
75 fronga 1.1 {
76 cklae 1.5 align::GlobalPoint pos = ad.pos();
77     align::RotationType rot = ad.rot();
78 fronga 1.1 Id = ad.id();
79     ObjId = ad.objId();
80     Pos[0]=pos.x(); Pos[1]=pos.y(); Pos[2]=pos.z();
81     Rot[0]=rot.xx(); Rot[1]=rot.xy(); Rot[2]=rot.xz();
82     Rot[3]=rot.yx(); Rot[4]=rot.yy(); Rot[5]=rot.yz();
83     Rot[6]=rot.zx(); Rot[7]=rot.zy(); Rot[8]=rot.zz();
84     tree->Fill();
85     return 0;
86     }
87    
88     // ----------------------------------------------------------------------------
89 flucke 1.3 int AlignableDataIORoot::writeRelRaw(const AlignableRelData &ad)
90 fronga 1.1 {
91 cklae 1.5 align::GlobalVector pos = ad.pos();
92     align::RotationType rot = ad.rot();
93 fronga 1.1 Id = ad.id();
94     ObjId = ad.objId();
95     Pos[0]=pos.x(); Pos[1]=pos.y(); Pos[2]=pos.z();
96     Rot[0]=rot.xx(); Rot[1]=rot.xy(); Rot[2]=rot.xz();
97     Rot[3]=rot.yx(); Rot[4]=rot.yy(); Rot[5]=rot.yz();
98     Rot[6]=rot.zx(); Rot[7]=rot.zy(); Rot[8]=rot.zz();
99     tree->Fill();
100     return 0;
101     }
102    
103     // ----------------------------------------------------------------------------
104     AlignableAbsData AlignableDataIORoot::readAbsRaw(Alignable* ali,int& ierr)
105     {
106 cklae 1.5 align::GlobalPoint pos;
107     align::RotationType rot;
108 fronga 1.1
109 cklae 1.5 align::StructureType typeId = ali->alignableObjectId();
110     align::ID id = ali->id();
111 fronga 1.1 int entry = findEntry(id,typeId);
112     if(entry!=-1) {
113     tree->GetEntry(entry);
114 cklae 1.5 align::GlobalPoint pos2(Pos[0],Pos[1],Pos[2]);
115     align::RotationType rot2(Rot[0],Rot[1],Rot[2],
116     Rot[3],Rot[4],Rot[5],
117     Rot[6],Rot[7],Rot[8]);
118 fronga 1.1 pos=pos2;
119     rot=rot2;
120     ierr=0;
121     }
122     else ierr=-1;
123    
124     return AlignableAbsData(pos,rot,id,typeId);
125     }
126    
127     // ----------------------------------------------------------------------------
128    
129     AlignableRelData AlignableDataIORoot::readRelRaw(Alignable* ali,int& ierr)
130     {
131 cklae 1.5 align::GlobalVector pos;
132     align::RotationType rot;
133 fronga 1.1
134 cklae 1.5 align::StructureType typeId = ali->alignableObjectId();
135     align::ID id = ali->id();
136 fronga 1.1 int entry = findEntry(id,typeId);
137     if(entry!=-1) {
138     tree->GetEntry(entry);
139 cklae 1.5 align::GlobalVector pos2(Pos[0],Pos[1],Pos[2]);
140     align::RotationType rot2(Rot[0],Rot[1],Rot[2],
141     Rot[3],Rot[4],Rot[5],
142     Rot[6],Rot[7],Rot[8]);
143 fronga 1.1 pos=pos2;
144     rot=rot2;
145     ierr=0;
146     }
147     else ierr=-1;
148    
149     return AlignableRelData(pos,rot,id,typeId);
150     }