91{
92 Bool_t addcl(true), usevoltracks(false), writebck(false);
93
94 if (strstr(options,"NOCL") ) addcl=false;
95 if (strstr(options,"TR") ) usevoltracks=true;
96 if (strstr(options,"BCK") ) writebck=true;
97
98
100 Int_t nplates = dataset.N();
101 cout << "The dataset has " << nplates << " plates" << endl;
102
103
104 cout << "Open the plate n. " << pieceID << endl;
107 if(piece->
Nruns() != 1) { cout <<
"Raw data not found" << endl;
return 0; }
108 Float_t piece_z = piece->
GetLayer(0)->
Z() ;
109 Int_t piece_id = piece->
Plate() ;
110 Int_t piece_piece = atoi( piece->
MakeName()+3 );
111 cout << " plate id "<<piece_id <<" " << piece_piece<<" z: " << piece_z << endl;
112 cout <<
" - Number of couples: " <<
couples->GetEntries() << endl;
113
119 couples->SetBranchAddress(
"s." ,&
s );
123
124
125 if(usevoltracks)
126 {
127 Int_t retpiece_id, retpiece_piece;
128 TEventList* cplist =
GetCPListFromTracks(tracksfname, pieceID, cutstr_tr, &retpiece_id , &retpiece_piece ) ;
129 if (retpiece_id != piece_id || retpiece_piece != piece_piece )
130 {
131 cout << " ERROR: the piece ID or the piece number do not corresponds...." << endl;
132 return -1 ;
133 }
134 cout << " - Number of couples (in volume tracks): " << cplist->GetN() ;
135 if (cutstr_tr[0]=='1') cout<<endl; else cout << " /\""<< cutstr_tr <<"\"" << endl;
137 }
138
139
140 TCut cut_cp;
141 cut_cp = cutstr_cp ;
142 Int_t selcp =
couples->Draw(
">>dum", cut_cp);
143 cout << " - Number of selected couples: " << selcp;
144 if (cutstr_cp[0]!='1') cout << " /\""<< cutstr_cp <<"\"";
145 if (usevoltracks) cout << " (belonging to volume tracks)";
146 if (cutstr_tr[0]=='1') cout << endl; else cout << " /\""<< cutstr_tr <<"\"" << endl;
147
148
149
153
154
156 cout << run1->
GetFile()->GetName() << endl;
157 cout << dataset.GetPiece(pieceID)->GetNameCP() << endl;
161
162
167
168
171 *outrh = *rh1 ;
172
173
174 cout<<"Add clusters "; if(addcl) cout<<"enabled\n"; else cout<<"disabled\n"; cout <<endl;
175 printf("Start Filling... ... %3d%%", 0) ;
177 char str[128];
181
182 Int_t totsegments=0;
183
184 for(Int_t i=0; i<nviews; i++)
185 {
186 if(i%100==0) printf("\b\b\b\b%3d%%",(int)((double)i/double(nviews)*100.));
187
190 v1 = run1->
GetEntry(i,1,addcl,1,0,1);
192
193
194 sprintf(str,"s1.eVid[0]==%d || s2.eVid[0]==%d",i,i);
196
198 TEventList *lst = (TEventList*)gDirectory->GetList()->FindObject("lst");
199
200 Long_t nlinked = lst->GetN();
202 Long_t nselected;
203
204
207 Long_t segID;
208 for(int j=0;j<nlinked;j++) {
209 couples->GetEntry(lst->GetEntry(j));
210 segp = side?
s1:
s2 ;
211 segID = segp->
Vid(1);
212
214 }
215 if(listlinked) nlinked = listlinked->
GetEntries();
216 if(listlinked) listlinked->
Sort();
217
218
219 if(writebck) {
220
221 Int_t iLink=0;
222 for(Int_t j=0;j<ntotal;j++) {
223
224 if ( nlinked && j == listlinked->
At(iLink)->
Value() ) {
225 if(iLink < nlinked-1) iLink++;
226 continue;
227 } else {
228 segID = (Long_t) j ;
229 listselected->
Add(segID);
230 }
231 }
233 } else {
234 listselected = listlinked;
235 nselected = nlinked ;
236 }
237
238
239 totsegments += nselected;
240
241
250
251
255 }
256
258
259 for(Int_t j=0; j<nselected; j++) {
260
261
262
264
266 if (addcl) {
269 if(!clusters) continue;
270 int ncl = clusters->GetLast()+1;
271 for(Int_t k=0; k<ncl; k++ ) {
274 }
275 }
276 }
278 }
279 printf("\b\b\b\b%3d%%\n",100);
280 cout << " - Number of selected segments: " << totsegments <<endl <<endl;
281
284 return 0;
285}
FILE * f
Definition: RecDispMC.C:150
Definition: EdbAffine.h:17
Float_t B2() const
Definition: EdbAffine.h:48
void Invert()
Definition: EdbAffine.cxx:103
Float_t A22() const
Definition: EdbAffine.h:46
Float_t A21() const
Definition: EdbAffine.h:45
Float_t A12() const
Definition: EdbAffine.h:44
Float_t B1() const
Definition: EdbAffine.h:47
Float_t A11() const
Definition: EdbAffine.h:43
Definition: EdbCluster.h:19
Edb raw data unit (scanned plate) associated with run file.
Definition: EdbDataSet.h:26
const char * GetRunFile(int i) const
Definition: EdbDataSet.cxx:183
EdbLayer * GetLayer(int id)
Definition: EdbDataSet.h:87
int InitCouplesTree(const char *mode="READ")
Definition: EdbDataSet.cxx:1239
int Nruns() const
Definition: EdbDataSet.h:84
const char * GetNameCP() const
Definition: EdbDataSet.h:76
int Plate() const
Definition: EdbDataSet.h:66
const char * MakeName()
Definition: EdbDataSet.cxx:190
OPERA emulsion data set.
Definition: EdbDataSet.h:144
Definition: EdbFrame.h:20
float GetZ() const
Definition: EdbFrame.h:42
int GetNcl() const
Definition: EdbFrame.h:43
int GetID() const
Definition: EdbFrame.h:41
EdbAffine2D * GetAffineXY()
Definition: EdbLayer.h:119
float Z() const
Definition: EdbLayer.h:77
void Close()
Definition: EdbRun.cxx:439
EdbView * GetView() const
Definition: EdbRun.h:110
int GetEntries() const
Definition: EdbRun.h:136
TFile * GetFile()
Definition: EdbRun.h:149
EdbRunHeader * GetHeader() const
Definition: EdbRun.h:138
EdbView * GetEntry(int entry, int ih=1, int icl=0, int iseg=1, int itr=0, int ifr=0)
Definition: EdbRun.cxx:462
void AddView()
Definition: EdbRun.cxx:305
Definition: EdbSegCouple.h:17
segment of the track
Definition: EdbSegment.h:63
TObjArray * GetElements() const
Definition: EdbSegment.h:117
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219
EdbSegment * AddSegment(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=-1)
Definition: EdbView.h:231
Int_t GetNframesTop() const
Definition: EdbView.h:207
int AttachClustersToSegments()
Definition: EdbView.cxx:360
Int_t Nsegments() const
Definition: EdbView.h:216
Int_t GetNframes() const
Definition: EdbView.h:206
EdbCluster * AddCluster(EdbCluster *c)
Definition: EdbView.h:225
void AddFrame(int id, float z, int ncl=0, int npix=0)
Definition: EdbView.cxx:268
TClonesArray * GetFrames() const
Definition: EdbView.h:167
void Clear()
Definition: EdbView.cxx:79
sort collection with attributes
Definition: TIndexCell.h:19
Long_t Value() const
Definition: TIndexCell.h:79
Int_t GetEntries() const
Definition: TIndexCell.h:82
TIndexCell const * At(Int_t narg, Int_t vind[]) const
Definition: TIndexCell.cpp:519
void Sort(Int_t upto=kMaxInt)
Definition: TIndexCell.cpp:539
TIndexCell * FindAdd(Long_t p1)
Definition: TIndexCell.cpp:575
Int_t Add(Int_t narg, Long_t varg[])
Definition: TIndexCell.cpp:602
TTree * couples
Definition: check_cp.C:50
s
Definition: check_shower.C:55
EdbSegP * s2
Definition: tlg2couples.C:30
EdbSegCouple * cp
Definition: tlg2couples.C:28
TEventList * GetCPListFromTracks(const char *fname, Int_t pid, const char *cutstr="1", Int_t *retpiece_id=0, Int_t *retpiece_piece=0)
Definition: tracks2edb.C:30