FEDRA emulsion software from the OPERA Collaboration
EdbMosaicIO Class Reference

#include <EdbMosaicIO.h>

Inheritance diagram for EdbMosaicIO:
Collaboration diagram for EdbMosaicIO:

Public Member Functions

void Close ()
 
void DrawFragment (EdbPattern &p)
 
 EdbMosaicIO ()
 
std::string FileName (int brick, int plate, int major, int minor, const char *pref="", const char *suff="")
 
EdbLayerGetCorrMap (int plate, int side)
 
const char * GetFileName () const
 
EdbPatternGetFragment (int plate, int side, int id, bool do_corr)
 
void Init (const char *file, Option_t *option="")
 
void SaveCorrMap (int plate, int side, EdbLayer &l)
 
void SaveCorrMap (int plate, int side, EdbLayer &l, const char *file)
 
void SaveFragment (EdbPattern &p)
 
void SaveFragmentObj (TObject *ob, int plate, int side, int id, const char *pref)
 
void SaveSideObj (TObject *ob, int plate, int side, const char *pref)
 
virtual ~EdbMosaicIO ()
 

Private Attributes

TFile * eFile
 

Constructor & Destructor Documentation

◆ EdbMosaicIO()

EdbMosaicIO::EdbMosaicIO ( )
inline
21 { eFile=0; }
TFile * eFile
Definition: EdbMosaicIO.h:18

◆ ~EdbMosaicIO()

virtual EdbMosaicIO::~EdbMosaicIO ( )
inlinevirtual
22 { Close(); }
void Close()
Definition: EdbMosaicIO.h:39

Member Function Documentation

◆ Close()

void EdbMosaicIO::Close ( )
inline
39 { if(eFile) {eFile->Close(); eFile=0;} }

◆ DrawFragment()

void EdbMosaicIO::DrawFragment ( EdbPattern p)
131 {
132  TH2F *h2xy = new TH2F("hxy","hxy",1000, -10000, 10000, 1000, -10000,10000);
133  for(int i=0; i<p.N(); i++)
134  {
135  EdbSegP *s = p.GetSegment(i);
136  h2xy->Fill( s->X(), s->Y() );
137  }
138  TCanvas *c = new TCanvas("cdf","cdf",800,800);
139  //c->cd(1);
140  h2xy->Draw("colz");
141 }
Definition: EdbSegP.h:18
Float_t X() const
Definition: EdbSegP.h:170
Float_t Y() const
Definition: EdbSegP.h:171
p
Definition: testBGReduction_AllMethods.C:8
new TCanvas()
EdbSegP * s
Definition: tlg2pattern.C:32

◆ FileName()

std::string EdbMosaicIO::FileName ( int  brick,
int  plate,
int  major,
int  minor,
const char *  pref = "",
const char *  suff = "" 
)
25 {
26  TString s = Form("p%3.3d/%s%d.%d.%d.%d%s",plate,pref,brick,plate,major,minor,suff);
27  return std::string(s.Data());
28 }
BRICK brick
Definition: RecDispMC.C:103
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1

◆ GetCorrMap()

EdbLayer * EdbMosaicIO::GetCorrMap ( int  plate,
int  side 
)
122 {
123  if(eFile)
124  return (EdbLayer *)(eFile->Get( Form("map_p%d_%d", plate, side) ));
125  else
126  return 0;
127 }
Definition: EdbLayer.h:40

◆ GetFileName()

const char* EdbMosaicIO::GetFileName ( ) const
inline
36 { if(eFile) return eFile->GetName(); else return 0; }

◆ GetFragment()

EdbPattern * EdbMosaicIO::GetFragment ( int  plate,
int  side,
int  id,
bool  do_corr 
)
67 {
68  EdbPattern *p=0;
69  std::unique_ptr<EdbLayer> mapside(GetCorrMap(plate, side));
70  EdbLayer *l = nullptr;
71  if(mapside){
72  l = mapside->Map().GetLayer( id );
73  } else {
74  Log(1, "EdbMosaicIO::GetFragment", "Warning: no correction map found for plate %d side %d", plate, side);
75  }
76  // char *name = Form("p%d_%d_%d", plate, side, id);
77  std::string name = Form("p%d_%d_%d", plate, side, id);
78  Log(1,"EdbMosaicIO::GetFragment","%s",name.c_str());
79  if(eFile)
80  {
81  TObject *obj = eFile->Get( name.c_str() );
82  if(obj) p = (dynamic_cast<EdbPattern*>(obj));
83  if(p)
84  {
85  p->SetSide(side);
86  p->SetID(id);
87  if(do_corr)
88  if(l)
89  {
90  p->Transform( l->GetAffineXY());
91  p->TransformA( l->GetAffineTXTY());
92  p->TransformShr( l->Shr() );
93  Log(3,"EdbMosaicIO::GetFragment","AffXY : %s", l->GetAffineXY()->AsString() );
94  Log(3,"EdbMosaicIO::GetFragment","AffTXTY: %s", l->GetAffineTXTY()->AsString() );
95  }
96  }
97  return p;
98  }
99  else return 0;
100 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
const char * AsString() const
Definition: EdbAffine.cxx:57
EdbLayer * GetLayer(float x, float y)
Definition: EdbLayer.h:24
EdbCorrectionMap & Map()
Definition: EdbLayer.h:73
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:120
float Shr() const
Definition: EdbLayer.h:90
EdbAffine2D * GetAffineTXTY()
Definition: EdbLayer.h:121
EdbLayer * GetCorrMap(int plate, int side)
Definition: EdbMosaicIO.cxx:121
Definition: EdbPattern.h:280
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24

◆ Init()

void EdbMosaicIO::Init ( const char *  file,
Option_t *  option = "" 
)
17 {
18  eFile = TFile::Open( file, option );
19  if(!eFile || eFile->IsZombie())
20  Log(1, "EdbMosaicIO::Init", "Error: can not open file! %s",file);
21 }
TFile * file
Definition: write_pvr.C:3

◆ SaveCorrMap() [1/2]

void EdbMosaicIO::SaveCorrMap ( int  plate,
int  side,
EdbLayer l 
)
104 {
105  if(eFile)
106  {
107  eFile->cd();
108  l.Write( Form("map_p%d_%d", plate,side ) );
109  } else Log(1,"EdbMosaicIO::SaveCorrMap","ERROR: file is not opened!");
110 }

◆ SaveCorrMap() [2/2]

void EdbMosaicIO::SaveCorrMap ( int  plate,
int  side,
EdbLayer l,
const char *  file 
)
114 {
115  std::unique_ptr<TFile> f(TFile::Open(file,"UPDATE"));
116  if (!f || f->IsZombie()) Log(1,"EdbMosaicIO::SaveCorrMap","ERROR! can not open file %s", file);
117  else {f->cd(); l.Write( Form("map_p%d_%d", plate,side ) ); }
118 }
FILE * f
Definition: RecDispMC.C:150

◆ SaveFragment()

void EdbMosaicIO::SaveFragment ( EdbPattern p)
32 {
33  if(eFile)
34  {
35  eFile->cd();
36  Int_t bytes = p.Write( Form("p%d_%d_%d", p.Plate(), p.Side(), p.ID() ) );
37  if(bytes==0)
38  Log(1,"EdbMosaicIO::SaveFragment","Error writing pattern p%d_%d_%d", p.Plate(), p.Side(), p.ID() );
39  if(bytes>1000000000||bytes<0)
40  Log(1,"EdbMosaicIO::SaveFragment","Warning: fragment p%d_%d_%d serialized size %d exceeds 1 GB - reduce the fragment size!",
41  p.Plate(), p.Side(), p.ID(), bytes);
42  }
43 }

◆ SaveFragmentObj()

void EdbMosaicIO::SaveFragmentObj ( TObject *  ob,
int  plate,
int  side,
int  id,
const char *  pref 
)
47 {
48  if(eFile)
49  {
50  eFile->cd();
51  ob->Write( Form("%s%d_%d_%d", pref, plate, side, id) );
52  }
53 }
EdbSegP * ob
Definition: testBGReduction_AllMethods.C:11

◆ SaveSideObj()

void EdbMosaicIO::SaveSideObj ( TObject *  ob,
int  plate,
int  side,
const char *  pref 
)
57 {
58  if(eFile)
59  {
60  eFile->cd();
61  ob->Write( Form("%s%d_%d", pref, plate, side) );
62  }
63 }

Member Data Documentation

◆ eFile

TFile* EdbMosaicIO::eFile
private

The documentation for this class was generated from the following files: