HIPUserVariablesIORoot

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#ifndef HIPUserVariablesIORoot_H
#define HIPUserVariablesIORoot_H

#include "Alignment/CommonAlignment/interface/Utilities.h"
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentIORootBase.h"
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentUserVariablesIO.h"

/** concrete class for ROOT based IO of AlignmentUserVariables */

class HIPUserVariablesIORoot : public AlignmentIORootBase, public AlignmentUserVariablesIO {
public:
  using Alignables = align::Alignables;

  /** constructor */
  HIPUserVariablesIORoot();

  /** write user variables */
  void writeHIPUserVariables(const Alignables& alivec, const char* filename, int iter, bool validCheck, int& ierr);

  /** read user variables */
  std::vector<AlignmentUserVariables*> readHIPUserVariables(const Alignables& alivec,
                                                            const char* filename,
                                                            int iter,
                                                            int& ierr);

private:
  /** write AlignmentParameters of one Alignable */
  int writeOne(Alignable* ali) override;

  /** read AlignmentParameters of one Alignable */
  AlignmentUserVariables* readOne(Alignable* ali, int& ierr) override;

  /** open IO */
  int open(const char* filename, int iteration, bool writemode) override {
    newopen = true;
    return openRoot(filename, iteration, writemode);
  }

  /** close IO */
  int close(void) override { return closeRoot(); }

  // helper functions

  int findEntry(unsigned int detId, int comp);
  void createBranches(void) override;
  void setBranchAddresses(void) override;

  // data members

  static const int nparmax = 19;

  /** alignment parameter tree */
  int ObjId;
  unsigned int Id;
  int Nhit, Nparj, Npare;
  int DataType;
  double Jtvj[nparmax * (nparmax + 1) / 2];
  double Jtve[nparmax];
  double AlignableChi2;
  unsigned int AlignableNdof;
  double Par[nparmax];
  double ParError[nparmax];

  bool newopen;
  typedef std::map<std::pair<int, int>, int> treemaptype;
  treemaptype treemap;
};

#endif