FEDRA emulsion software from the OPERA Collaboration
aln.cpp File Reference
#include "TIndexCell.h"
#include "EdbAffine.h"
#include "EdbVirtual.h"
#include "EdbRun.h"
#include "EdbSegment.h"
#include "EdbPVRec.h"
Include dependency graph for aln.cpp:

Functions

void align10edb ()
 
void getDataEdb (EdbRun &edbRun, int aid, float shr, EdbPVRec *pvol)
 
void inittree ()
 
int main ()
 
void maketree (EdbPVRec *al)
 
void Set_UTS_OPERA_microtrack (EdbScanCond *cond)
 

Variables

EdbPVRecali =0
 
EdbScanCondscanCond =0
 
TTree * treeCP =0
 

Function Documentation

◆ align10edb()

void align10edb ( )

156 {
157 
158  EdbRun edbRun("/home/valeri/public/ns2root/src/appl/fxx2edb/fxx_10.25.root","READ");
159  TFile *f = new TFile("10edb.root","RECREATE");
160  inittree();
161 
162  scanCond = new EdbScanCond();
164 
165  //for(int aid=100001; aid<100036; aid++) {
166  for(int aid=100001; aid<100002; aid++) {
167 
168  ali = new EdbPVRec();
170 
171  float shr = 1.3; //30/dz1;
172  getDataEdb( edbRun, aid, shr, ali );
173 
174  ali->SetPatternsID();
175 
176  scanCond->Print();
178 
179  EdbPatCouple *c = new EdbPatCouple();
180  c->SetID(0,1);
181  c->SetOffset(0,0,0,0); // expected offsets (max)
182  c->SetSigma(1,1,.003,.003); // the expected fraction of pat<->pat error due to deformations,etc
183  c->SetCond(scanCond);
184  ali->AddCouple(c);
185  ali->SetCouples();
186  c->FindOffset01(50,50);
187  //ali->Link();
188 
189  maketree(ali);
190  delete ali;
191  }
192 
193  f->Purge();
194 }
FILE * f
Definition: RecDispMC.C:150
void inittree()
Definition: aln.cpp:84
void maketree(EdbPVRec *al)
Definition: aln.cpp:102
EdbPVRec * ali
Definition: aln.cpp:14
void Set_UTS_OPERA_microtrack(EdbScanCond *cond)
Definition: aln.cpp:19
EdbScanCond * scanCond
Definition: aln.cpp:16
void getDataEdb(EdbRun &edbRun, int aid, float shr, EdbPVRec *pvol)
Definition: aln.cpp:30
Definition: EdbPVRec.h:148
void SetSegmentsErrors()
Definition: EdbPVRec.cxx:1125
void SetCouples()
Definition: EdbPVRec.cxx:933
EdbPatCouple * AddCouple(int id1, int id2)
Definition: EdbPVRec.cxx:915
void SetScanCond(EdbScanCond *scan)
Definition: EdbPVRec.h:171
Definition: EdbPVRec.h:27
void SetOffset(float o1, float o2, float o3, float o4)
Definition: EdbPVRec.h:65
void SetCond(EdbScanCond *cond)
Definition: EdbPVRec.h:74
void SetSigma(float s1, float s2, float s3, float s4)
Definition: EdbPVRec.h:67
int FindOffset01(float xmax, float ymax)
Definition: EdbPVRec.cxx:190
void SetID(int id1, int id2)
Definition: EdbPVRec.h:62
void SetPatternsID()
Definition: EdbPattern.cxx:1763
Definition: EdbRun.h:74
Definition: EdbScanCond.h:10
void Print() const
Definition: EdbScanCond.cxx:50

◆ getDataEdb()

void getDataEdb ( EdbRun edbRun,
int  aid,
float  shr,
EdbPVRec pvol 
)
33 {
34  EdbPattern *patU = 0;
35  EdbPattern *patD = 0;
36  EdbSegP *segP = new EdbSegP();
37 
38  EdbView *view=edbRun.GetView();
39  EdbSegment *seg=0;
40 
41  patU = new EdbPattern();
42  patU->SetZ(0);
43  patD = new EdbPattern();
44  patD->SetZ(200);
45 
46  for(int iv=0; iv<edbRun.GetEntries(); iv++ ) {
47 
48  view = edbRun.GetEntry(iv);
49 
50  if( view->GetAreaID() != aid ) continue;
51 
52  for(int j=0;j<view->Nsegments();j++) {
53 
54  seg = view->GetSegment(j);
55 
56  //if( seg->GetTx() > 0.15) continue;
57  //if( TMath::Abs(seg->GetTy()) > 0.25) continue;
58 
59  segP->Set( seg->GetID(),
60  seg->GetX0(),
61  seg->GetY0(),
62  seg->GetTx()*shr,
63  seg->GetTy()*shr );
64  segP->SetW(seg->GetPuls());
65 
66  if(seg->GetSide()==1) {
67  segP->SetZ( patU->Z() );
68  patU->AddSegment( *segP);
69  }
70  if(seg->GetSide()==2) {
71  segP->SetZ( patD->Z() );
72  patD->AddSegment( *segP);
73  }
74 
75  }
76  }
77 
78  pvol->AddPattern(patU);
79  pvol->AddPattern(patD);
80 
81 }
Definition: EdbPattern.h:280
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867
int GetEntries() const
Definition: EdbRun.h:135
EdbView * GetEntry(int entry, int ih=1, int icl=0, int iseg=1, int itr=0, int ifr=0)
Definition: EdbRun.cxx:489
EdbView * GetView() const
Definition: EdbRun.h:109
virtual Float_t GetX0() const
Definition: EdbSegment.h:37
virtual Float_t GetTx() const
Definition: EdbSegment.h:40
virtual Float_t GetY0() const
Definition: EdbSegment.h:38
virtual Float_t GetTy() const
Definition: EdbSegment.h:41
Definition: EdbSegP.h:18
void SetZ(float z)
Definition: EdbSegP.h:122
void SetW(float w)
Definition: EdbSegP.h:129
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
Definition: EdbSegment.h:61
Int_t GetPuls() const
Definition: EdbSegment.h:88
Int_t GetID() const
Definition: EdbSegment.h:90
Int_t GetSide() const
Definition: EdbSegment.h:87
Float_t Z() const
Definition: EdbPattern.h:87
void SetZ(float z)
Definition: EdbPattern.h:41
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:71
Definition: EdbView.h:134
Int_t Nsegments() const
Definition: EdbView.h:216
Int_t GetAreaID() const
Definition: EdbView.h:191
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219

◆ inittree()

void inittree ( )

85 {
86  int pid1,pid2;
87  EdbSegCouple *cp=0;
88  EdbSegP *s1=0;
89  EdbSegP *s2=0;
90  EdbSegP *s=0;
91 
92  treeCP = new TTree("couples","couples");
93  treeCP->Branch("pid1",&pid1,"pid1/I");
94  treeCP->Branch("pid2",&pid2,"pid2/I");
95  treeCP->Branch("cp","EdbSegCouple",&cp,32000,99);
96  treeCP->Branch("s1.","EdbSegP",&s1,32000,99);
97  treeCP->Branch("s2.","EdbSegP",&s2,32000,99);
98  treeCP->Branch("s." ,"EdbSegP",&s,32000,99);
99 }
TTree * treeCP
Definition: aln.cpp:15
Definition: EdbSegCouple.h:14
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31
EdbSegP * s
Definition: tlg2pattern.C:32
EdbSegCouple * cp
Definition: tlg2pattern.C:29

◆ main()

int main ( void  )
199 {
200  align10edb();
201  return 0;
202 }
void align10edb()
Definition: aln.cpp:155

◆ maketree()

void maketree ( EdbPVRec al)

103 {
104  EdbPatCouple *patc=0;
105 
106  int pid1,pid2;
107  EdbSegCouple *cp=0;
108  EdbSegP *s1=0;
109  EdbSegP *s2=0;
110  EdbSegP *s=0;
111 
112  treeCP->SetBranchAddress("pid1",&pid1);
113  treeCP->SetBranchAddress("pid2",&pid2);
114  treeCP->SetBranchAddress("cp" ,&cp);
115  treeCP->SetBranchAddress("s1." ,&s1);
116  treeCP->SetBranchAddress("s2." ,&s2);
117  treeCP->SetBranchAddress("s." ,&s );
118 
119  // **** fill tree with raw segments ****
120  EdbPattern *pat=0;
121  for( int ip=0; ip<al->Npatterns(); ip++ ) {
122  pat = al->GetPattern(ip);
123  pid1 = pat->ID();
124  pid2 = -1;
125  printf("maketree: pattern %d of %d has %d segments\n",ip,al->Npatterns(),pat->N());
126 
127  for( int ic=0; ic<pat->N(); ic++ ) {
128  s1 = pat->GetSegment(ic);
129  treeCP->Fill();
130  }
131  }
132 
133 
134  for( int ip=0; ip<al->Ncouples(); ip++ ) {
135  patc = al->GetCouple(ip);
136  pid1 = patc->Pat1()->ID();
137  pid2 = patc->Pat2()->ID();
138 
139  for( int ic=0; ic<patc->Ncouples(); ic++ ) {
140  cp = patc->GetSegCouple(ic);
141  s1 = patc->Pat1()->GetSegment(cp->ID1());
142  s2 = patc->Pat2()->GetSegment(cp->ID2());
143  s = new EdbSegP(*s1);
144  *s += *s2;
145  treeCP->Fill();
146  delete s;
147  }
148  }
149 
150  treeCP->Write();
151 
152 }
EdbPatCouple * GetCouple(int i) const
Definition: EdbPVRec.h:190
Int_t Ncouples() const
Definition: EdbPVRec.h:188
EdbPattern * Pat2()
Definition: EdbPVRec.h:90
EdbPattern * Pat1()
Definition: EdbPVRec.h:89
EdbSegCouple * GetSegCouple(int i) const
Definition: EdbPVRec.h:85
int Ncouples() const
Definition: EdbPVRec.h:80
int ID() const
Definition: EdbPattern.h:328
Int_t Npatterns() const
Definition: EdbPattern.h:380
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1887
int ID2() const
Definition: EdbSegCouple.h:53
int ID1() const
Definition: EdbSegCouple.h:52
Int_t N() const
Definition: EdbPattern.h:89
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66

◆ Set_UTS_OPERA_microtrack()

void Set_UTS_OPERA_microtrack ( EdbScanCond cond)

20 {
21  cond->SetSigma0( 1., 1.,.025,.025 ); // sigma0 "x,y,tx,ty" at 0 angle
22  cond->SetDegrad( 1. ); // sigma(tx) = sigma0*(1+degrad*tx)
23  cond->SetBins(5,5,1,1); // bins in [sigma] for checks
24  cond->SetPulsRamp0( 60000.,100000. ); // in range (Pmin:Pmax) Signal/All is nearly linear
25  cond->SetPulsRamp04( 50000., 90000. ); //
26  cond->SetName("MC_basetrack");
27 }
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetSigma0(float x, float y, float tx, float ty)
Definition: EdbScanCond.h:62
void SetBins(float bx, float by, float btx, float bty)
Definition: EdbScanCond.h:65
void SetPulsRamp04(float p1, float p2)
Definition: EdbScanCond.h:75

Variable Documentation

◆ ali

EdbPVRec* ali =0

◆ scanCond

EdbScanCond* scanCond =0

◆ treeCP

TTree* treeCP =0