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
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:1129
void SetCouples()
Definition: EdbPVRec.cxx:934
EdbPatCouple * AddCouple(int id1, int id2)
Definition: EdbPVRec.cxx:916
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:191
void SetID(int id1, int id2)
Definition: EdbPVRec.h:62
void SetPatternsID()
Definition: EdbPattern.cxx:1603
Definition: EdbRun.h:75
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:273
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707
EdbView * GetView() const
Definition: EdbRun.h:110
int GetEntries() const
Definition: EdbRun.h:136
EdbView * GetEntry(int entry, int ih=1, int icl=0, int iseg=1, int itr=0, int ifr=0)
Definition: EdbRun.cxx:462
virtual Float_t GetX0() const
Definition: EdbSegment.h:38
virtual Float_t GetTx() const
Definition: EdbSegment.h:41
virtual Float_t GetY0() const
Definition: EdbSegment.h:39
virtual Float_t GetTy() const
Definition: EdbSegment.h:42
Definition: EdbSegP.h:21
void SetZ(float z)
Definition: EdbSegP.h:125
void SetW(float w)
Definition: EdbSegP.h:132
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:87
segment of the track
Definition: EdbSegment.h:63
Int_t GetPuls() const
Definition: EdbSegment.h:90
Int_t GetID() const
Definition: EdbSegment.h:92
Int_t GetSide() const
Definition: EdbSegment.h:89
Float_t Z() const
Definition: EdbPattern.h:84
void SetZ(float z)
Definition: EdbPattern.h:41
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:72
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219
Int_t Nsegments() const
Definition: EdbView.h:216
Int_t GetAreaID() const
Definition: EdbView.h:191

◆ inittree()

void inittree ( )

85{
86 int pid1,pid2;
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:17
s
Definition: check_shower.C:55
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30
EdbSegCouple * cp
Definition: tlg2couples.C:28

◆ 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
EdbSegCouple * GetSegCouple(int i) const
Definition: EdbPVRec.h:85
EdbPattern * Pat1()
Definition: EdbPVRec.h:89
EdbPattern * Pat2()
Definition: EdbPVRec.h:90
int Ncouples() const
Definition: EdbPVRec.h:80
int ID() const
Definition: EdbPattern.h:319
Int_t Npatterns() const
Definition: EdbPattern.h:366
EdbPattern * GetPattern(int id) const
Definition: EdbPattern.cxx:1721
int ID2() const
Definition: EdbSegCouple.h:56
int ID1() const
Definition: EdbSegCouple.h:55
Int_t N() const
Definition: EdbPattern.h:86
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