CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIORoot.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignableDataIORoot_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignableDataIORoot_h
00003 
00004 #include <map>
00005 
00006 #include "Alignment/CommonAlignment/interface/StructureType.h"
00007 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIO.h"
00008 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentIORootBase.h"
00009 
00011 
00012 class AlignableDataIORoot : public AlignmentIORootBase, public AlignableDataIO
00013 {
00014 
00015   friend class AlignmentIORoot;
00016 
00017   private:
00019   AlignableDataIORoot(PosType p); 
00020 
00022   int open(const char* filename, int iteration, bool writemode)
00023   { newopen=true; return openRoot(filename,iteration,writemode); }
00024 
00026   int close(void){ return closeRoot(); }
00027 
00029   int writeAbsRaw(const AlignableAbsData &ad);
00031   AlignableAbsData readAbsRaw(Alignable* ali,int& ierr);
00033   int writeRelRaw(const AlignableRelData &ad);
00035   AlignableRelData readRelRaw(Alignable* ali,int& ierr);
00036 
00037   int findEntry(align::ID, align::StructureType);
00038   void createBranches(void);
00039   void setBranchAddresses(void);
00040 
00041   // data members
00042 
00044   align::StructureType ObjId;
00045   //unsigned int Id;
00046   align::ID Id;
00047   Double_t Pos[3];
00048   Double_t Rot[9];
00049   UInt_t numDeformationValues_;
00050   enum {kMaxNumPar = 20}; // slighly above 'two bowed surfaces' limit
00051   Float_t deformationValues_[kMaxNumPar];
00052 
00053   bool newopen;
00054   typedef std::map< std::pair<align::ID, align::StructureType>, int > treemaptype;
00055   treemaptype treemap;
00056 
00057 };
00058 
00059 
00060 
00061 #endif