#include <HIPUserVariablesIORoot.h>
Public Types | |
typedef std::vector< Alignable * > | Alignables |
Public Member Functions | |
HIPUserVariablesIORoot () | |
std::vector < AlignmentUserVariables * > | readHIPUserVariables (const Alignables &alivec, const char *filename, int iter, int &ierr) |
void | writeHIPUserVariables (const Alignables &alivec, const char *filename, int iter, bool validCheck, int &ierr) |
Private Types | |
typedef std::map< std::pair < int, int >, int > | treemaptype |
Private Member Functions | |
int | close (void) |
void | createBranches (void) |
create root branches | |
int | findEntry (unsigned int detId, int comp) |
int | open (const char *filename, int iteration, bool writemode) |
AlignmentUserVariables * | readOne (Alignable *ali, int &ierr) |
void | setBranchAddresses (void) |
set root branches | |
int | writeOne (Alignable *ali) |
Private Attributes | |
double | AlignableChi2 |
unsigned int | AlignableNdof |
unsigned int | Id |
double | Jtve [nparmax] |
double | Jtvj [nparmax *(nparmax+1)/2] |
bool | newopen |
int | Nhit |
int | Npare |
int | Nparj |
int | ObjId |
treemaptype | treemap |
Static Private Attributes | |
static const int | nparmax = 6 |
concrete class for ROOT based IO of AlignmentUserVariables
Definition at line 9 of file HIPUserVariablesIORoot.h.
typedef std::vector<Alignable*> HIPUserVariablesIORoot::Alignables |
Definition at line 15 of file HIPUserVariablesIORoot.h.
typedef std::map< std::pair<int,int> , int > HIPUserVariablesIORoot::treemaptype [private] |
Definition at line 65 of file HIPUserVariablesIORoot.h.
HIPUserVariablesIORoot::HIPUserVariablesIORoot | ( | ) |
constructor
Definition at line 16 of file HIPUserVariablesIORoot.cc.
References i, Jtve, Jtvj, nparmax, AlignmentIORootBase::treename, and AlignmentIORootBase::treetxt.
int HIPUserVariablesIORoot::close | ( | void | ) | [inline, private, virtual] |
close IO
Implements AlignmentUserVariablesIO.
Definition at line 43 of file HIPUserVariablesIORoot.h.
References AlignmentIORootBase::closeRoot().
Referenced by readHIPUserVariables(), and writeHIPUserVariables().
{return closeRoot();};
void HIPUserVariablesIORoot::createBranches | ( | void | ) | [private, virtual] |
create root branches
Implements AlignmentIORootBase.
Definition at line 31 of file HIPUserVariablesIORoot.cc.
References AlignableChi2, AlignableNdof, Id, Jtve, Jtvj, Nhit, Npare, Nparj, ObjId, and AlignmentIORootBase::tree.
{ tree->Branch("Id", &Id, "Id/i"); tree->Branch("ObjId", &ObjId, "ObjId/I"); tree->Branch("Nhit", &Nhit, "Nhit/I"); tree->Branch("Nparj", &Nparj, "Nparj/I"); tree->Branch("Jtvj", &Jtvj, "Jtvj[Nparj]/D"); tree->Branch("Npare", &Npare, "Npare/I"); tree->Branch("Jtve", &Jtve, "Jtve[Npare]/D"); tree->Branch("AlignableChi2", &AlignableChi2, "AlignableChi2/D"); tree->Branch("AlignableNdof", &AlignableNdof, "AlignableNdof/i"); }
int HIPUserVariablesIORoot::findEntry | ( | unsigned int | detId, |
int | comp | ||
) | [private] |
Definition at line 65 of file HIPUserVariablesIORoot.cc.
References Id, newopen, ObjId, query::result, AlignmentIORootBase::tree, and treemap.
Referenced by readOne().
{ if (newopen) { // we're here for the first time edm::LogInfo("Alignment") <<"[HIPUserVariablesIORoot::findEntry] fill map ..."; treemap.erase(treemap.begin(),treemap.end()); for (int ev = 0;ev<tree->GetEntries();ev++) { tree->GetEntry(ev); treemap[std::make_pair(Id,ObjId)]=ev; } newopen=false; } // now we have filled the map treemaptype::iterator imap = treemap.find(std::make_pair(detId,comp)); int result=-1; if (imap != treemap.end()) result=(*imap).second; return result; //double noAliPar = tree->GetEntries(); //for (int ev = 0;ev<noAliPar;ev++) { // tree->GetEntry(ev); // if(Id==detId&&comp==ObjId) return (ev); //} //return(-1); }
int HIPUserVariablesIORoot::open | ( | const char * | filename, |
int | iteration, | ||
bool | writemode | ||
) | [inline, private, virtual] |
open IO
Implements AlignmentUserVariablesIO.
Definition at line 39 of file HIPUserVariablesIORoot.h.
References newopen, and AlignmentIORootBase::openRoot().
Referenced by readHIPUserVariables(), and writeHIPUserVariables().
std::vector< AlignmentUserVariables * > HIPUserVariablesIORoot::readHIPUserVariables | ( | const Alignables & | alivec, |
const char * | filename, | ||
int | iter, | ||
int & | ierr | ||
) |
read user variables
Definition at line 190 of file HIPUserVariablesIORoot.cc.
References close(), open(), AlignmentUserVariablesIO::read(), and query::result.
Referenced by HIPAlignmentAlgorithm::collector().
AlignmentUserVariables * HIPUserVariablesIORoot::readOne | ( | Alignable * | ali, |
int & | ierr | ||
) | [private, virtual] |
read AlignmentParameters of one Alignable
Implements AlignmentUserVariablesIO.
Definition at line 134 of file HIPUserVariablesIORoot.cc.
References HIPUserVariables::alichi2, AlignableChi2, AlignableNdof, Alignable::alignableObjectId(), HIPUserVariables::alindof, prof2calltree::count, findEntry(), Alignable::id(), Jtve, HIPUserVariables::jtve, Jtvj, HIPUserVariables::jtvj, HIPUserVariables::nhit, Nhit, np, Npare, and AlignmentIORootBase::tree.
{ ierr=0; HIPUserVariables* uvar; int entry = findEntry(ali->id(), ali->alignableObjectId()); if(entry!=-1) { tree->GetEntry(entry); int np=Npare; AlgebraicVector jtve(np,0); AlgebraicSymMatrix jtvj(np,0); int count=0; for(int row=0;row<np;row++) { jtve[row]=Jtve[row]; for(int col=0; col < np;col++) { if(row-1<col) {jtvj[row][col]=Jtvj[count];count++;} } } uvar = new HIPUserVariables(np); uvar->jtvj=jtvj; uvar->jtve=jtve; uvar->nhit=Nhit; //Chi2n uvar->alichi2=AlignableChi2; uvar->alindof=AlignableNdof; return uvar; } // ierr=-1; return 0 ; }
void HIPUserVariablesIORoot::setBranchAddresses | ( | void | ) | [private, virtual] |
set root branches
Implements AlignmentIORootBase.
Definition at line 47 of file HIPUserVariablesIORoot.cc.
References AlignableChi2, AlignableNdof, Id, Jtve, Jtvj, Nhit, Npare, Nparj, ObjId, and AlignmentIORootBase::tree.
{ tree->SetBranchAddress("Id", &Id); tree->SetBranchAddress("ObjId", &ObjId); tree->SetBranchAddress("Nhit", &Nhit); tree->SetBranchAddress("Nparj", &Nparj); tree->SetBranchAddress("Jtvj", &Jtvj); tree->SetBranchAddress("Npare", &Npare); tree->SetBranchAddress("Jtve", &Jtve); tree->SetBranchAddress("AlignableChi2", &AlignableChi2); tree->SetBranchAddress("AlignableNdof", &AlignableNdof); }
void HIPUserVariablesIORoot::writeHIPUserVariables | ( | const Alignables & | alivec, |
const char * | filename, | ||
int | iter, | ||
bool | validCheck, | ||
int & | ierr | ||
) |
write user variables
Definition at line 174 of file HIPUserVariablesIORoot.cc.
References close(), open(), and AlignmentUserVariablesIO::write().
Referenced by HIPAlignmentAlgorithm::terminate().
int HIPUserVariablesIORoot::writeOne | ( | Alignable * | ali | ) | [private, virtual] |
write AlignmentParameters of one Alignable
Implements AlignmentUserVariablesIO.
Definition at line 94 of file HIPUserVariablesIORoot.cc.
References HIPUserVariables::alichi2, AlignableChi2, AlignableNdof, Alignable::alignableObjectId(), Alignable::alignmentParameters(), HIPUserVariables::alindof, prof2calltree::count, Id, Alignable::id(), HIPUserVariables::jtve, Jtve, HIPUserVariables::jtvj, Jtvj, HIPUserVariables::nhit, Nhit, np, Npare, Nparj, ObjId, AlignmentIORootBase::tree, and AlignmentParameters::userVariables().
{ AlignmentParameters* ap=ali->alignmentParameters(); if ((ap->userVariables())==0) { edm::LogError("Alignment") <<"UserVariables not found!"; return -1; } HIPUserVariables* uvar = dynamic_cast<HIPUserVariables*>(ap->userVariables()); AlgebraicSymMatrix jtvj = uvar->jtvj; AlgebraicVector jtve = uvar->jtve; int nhit=uvar->nhit; int np=jtve.num_row(); Nhit=nhit; Npare=np; Nparj=np*(np+1)/2; int count=0; for(int row=0;row<np;row++){ Jtve[row]=jtve[row]; for(int col=0;col<np;col++){ if(row-1<col){Jtvj[count]=jtvj[row][col];count++;} } } Id = ali->id(); ObjId = ali->alignableObjectId(); //Chi^2 of alignable AlignableChi2= uvar->alichi2 ; AlignableNdof= uvar->alindof ; tree->Fill(); return 0; }
double HIPUserVariablesIORoot::AlignableChi2 [private] |
Definition at line 61 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), readOne(), setBranchAddresses(), and writeOne().
unsigned int HIPUserVariablesIORoot::AlignableNdof [private] |
Definition at line 62 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), readOne(), setBranchAddresses(), and writeOne().
unsigned int HIPUserVariablesIORoot::Id [private] |
Definition at line 57 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), findEntry(), setBranchAddresses(), and writeOne().
double HIPUserVariablesIORoot::Jtve[nparmax] [private] |
Definition at line 60 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), HIPUserVariablesIORoot(), readOne(), setBranchAddresses(), and writeOne().
double HIPUserVariablesIORoot::Jtvj[nparmax *(nparmax+1)/2] [private] |
Definition at line 59 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), HIPUserVariablesIORoot(), readOne(), setBranchAddresses(), and writeOne().
bool HIPUserVariablesIORoot::newopen [private] |
Definition at line 64 of file HIPUserVariablesIORoot.h.
Referenced by findEntry(), and open().
int HIPUserVariablesIORoot::Nhit [private] |
Definition at line 58 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), readOne(), setBranchAddresses(), and writeOne().
int HIPUserVariablesIORoot::Npare [private] |
Definition at line 58 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), readOne(), setBranchAddresses(), and writeOne().
int HIPUserVariablesIORoot::Nparj [private] |
Definition at line 58 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), setBranchAddresses(), and writeOne().
const int HIPUserVariablesIORoot::nparmax = 6 [static, private] |
Definition at line 53 of file HIPUserVariablesIORoot.h.
Referenced by HIPUserVariablesIORoot().
int HIPUserVariablesIORoot::ObjId [private] |
alignment parameter tree
Definition at line 56 of file HIPUserVariablesIORoot.h.
Referenced by createBranches(), findEntry(), setBranchAddresses(), and writeOne().
treemaptype HIPUserVariablesIORoot::treemap [private] |
Definition at line 66 of file HIPUserVariablesIORoot.h.
Referenced by findEntry().