NCFS-Pack
A generic (astro)particle physics analysis framework
 
Loading...
Searching...
No Matches
NcVertex.cxx
Go to the documentation of this file.
1
31
33
168
169#include "NcVertex.h"
170#include "Riostream.h"
171
172ClassImp(NcVertex); // Class implementation to enable ROOT I/O
173
176{
185
186 Init();
187 Reset();
188 SetNvmax();
189 SetNjmax();
190}
191
193{
199
200 fNvmax=0;
201 fVertices=0;
202 fConnects=0;
203 fVertexCopy=0;
204 fNjmax=0;
205 fJets=0;
206 fJetTracks=0;
207 fJetCopy=0;
208 fLines=0;
209}
210
212{
219
220 if (n<=0)
221 {
222 cout << " *** This NcJet initialisation was invoked via the NcVertex ctor." << endl;
223 }
224 Init();
225 Reset();
226 SetNvmax();
227 SetNjmax();
228}
229
231{
237
238 if (fVertices)
239 {
240 delete fVertices;
241 fVertices=0;
242 }
243 if (fConnects)
244 {
245 delete fConnects;
246 fConnects=0;
247 }
248 if (fJets)
249 {
250 delete fJets;
251 fJets=0;
252 }
253 if (fJetTracks)
254 {
255 delete fJetTracks;
256 fJetTracks=0;
257 }
258 if (fLines)
259 {
260 delete fLines;
261 fLines=0;
262 }
263}
264
265void NcVertex::SetOwner(Bool_t own)
266{
289
290 Int_t mode=1;
291 if (!own) mode=0;
292 if (fVertices) fVertices->SetOwner(own);
293 fVertexCopy=mode;
294 if (fJets) fJets->SetOwner(own);
295 fJetCopy=mode;
296
297 NcJet::SetOwner(own);
298}
299
301{
307
308 Init();
309 fNvtx=0;
310 fNjets=0;
311 SetNvmax(v.fNvmax);
312 SetNjmax(v.fNjmax);
316 SetId(v.GetId());
317
318 // Copy all tracks except the ones coming from jets
319 NcTrack* tx=0;
320 Int_t jetflag=0,connect=0;
321 NcTrack* tx2=0;
322 for (Int_t it=1; it<=v.fNtrk; it++)
323 {
324 tx=v.GetTrack(it);
325 if (tx)
326 {
327 jetflag=v.IsJetTrack(tx);
328 connect=v.IsConnectTrack(tx);
329
330 if (!jetflag && !connect) AddTrack(tx);
331
332 if (connect)
333 {
334 if (!fConnects)
335 {
336 fConnects=new TObjArray(fNvmax);
337 if (!fTrackCopy) fConnects->SetOwner();
338 }
339 tx2=new NcTrack(*tx);
340 fConnects->Add(tx2);
341 AddTrack(tx2,0);
342 }
343 }
344 }
345
346 // Copy all the (secondary) vertices without re-creating connecting tracks
347 // The connecting tracks have already been copied above
348 NcVertex* vx=0;
349 for (Int_t iv=1; iv<=v.GetNvertices(); iv++)
350 {
351 vx=v.GetVertex(iv);
352 if (vx) AddVertex(vx,0);
353 }
354
355 // Copy all the jets including the jet tracks for these jets for which
356 // this was also the case in the original vertex
357 NcJet* jx=0;
358 for (Int_t ij=1; ij<=v.GetNjets(); ij++)
359 {
360 jx=v.GetJet(ij);
361 if (jx)
362 {
363 jetflag=0;
364 if (jx->GetNtracks())
365 {
366 tx=jx->GetTrack(1);
367 if (tx)
368 {
369 jetflag=v.IsJetTrack(tx);
370 }
371 }
372 AddJet(jx,jetflag);
373 }
374 }
375}
376
378{
384
385 if (n > 0)
386 {
387 fNvmax=n;
388 }
389 else
390 {
391 fNvmax=1;
392 }
393 if (fVertices)
394 {
395 delete fVertices;
396 fVertices=0;
397 }
398}
399
401{
407
408 if (n > 0)
409 {
410 fNjmax=n;
411 }
412 else
413 {
414 fNjmax=1;
415 }
416 if (fJets)
417 {
418 delete fJets;
419 fJets=0;
420 }
421}
422
424{
433
434 NcJet::Reset();
435
437
438 fNvtx=0;
439 if (fNvmax>0) SetNvmax(fNvmax);
440 if (fConnects)
441 {
442 delete fConnects;
443 fConnects=0;
444 }
445
446 fNjets=0;
447 if (fNjmax>0) SetNjmax(fNjmax);
448 if (fJetTracks)
449 {
450 delete fJetTracks;
451 fJetTracks=0;
452 }
453
454 if (fLines)
455 {
456 delete fLines;
457 fLines=0;
458 }
459}
460
462{
472
473 NcTrack* t;
474 if (fConnects)
475 {
476 for (Int_t i=0; i<=fConnects->GetLast(); i++)
477 {
478 t=(NcTrack*)fConnects->At(i);
479 NcTrack* test=(NcTrack*)fTracks->Remove(t);
480 if (test)
481 {
482 fNtrk--;
483 (Nc4Vector&)(*this)-=(Nc4Vector&)(*t);
484 fQ-=t->GetCharge();
485 if (fTrackCopy) delete t;
486 }
487 }
488 fTracks->Compress();
489 }
490
491 fNvtx=0;
492 if (fNvmax>0) SetNvmax(fNvmax);
493 if (fConnects)
494 {
495 delete fConnects;
496 fConnects=0;
497 }
498}
499
500void NcVertex::AddJet(NcJet& j,Int_t tracks)
501{
525
526 if (!fJets)
527 {
528 fJets=new TObjArray(fNjmax);
529 if (fJetCopy) fJets->SetOwner();
530 }
531 if (fNjets == fNjmax) // Check if maximum jet number is reached
532 {
533 fNjmax++;
534 fJets->Expand(fNjmax);
535 }
536
537 // Add the jet to the list
538 NcJet* jx=&j;
539 if (fJetCopy) jx=(NcJet*)j.Clone();
540
541 if (jx)
542 {
543 fNjets++;
544 fJets->Add(jx);
545 }
546
547 // Add the tracks of the jet to this vertex
548 if (tracks)
549 {
550 if (!fJetTracks)
551 {
552 fJetTracks=new TObjArray();
553 }
554 Int_t copy=1-(jx->GetTrackCopy());
555 NcTrack* tj;
556 for (Int_t i=1; i<=jx->GetNtracks(); i++)
557 {
558 tj=jx->GetTrack(i);
559 if (tj)
560 {
561 AddTrack(tj,copy);
562 fJetTracks->Add(tj);
563 }
564 }
565 }
566}
567
568void NcVertex::AddVertex(NcVertex& v,Int_t connect)
569{
595
596 if (!fVertices)
597 {
598 fVertices=new TObjArray(fNvmax);
599 if (fVertexCopy) fVertices->SetOwner();
600 }
601 if (fNvtx == fNvmax) // Check if maximum vertex number is reached
602 {
603 fNvmax++;
604 fVertices->Expand(fNvmax);
605 }
606
607 // Add the linked (secondary) vertex to the list
608 NcVertex* vx=&v;
609 if (fVertexCopy) vx=(NcVertex*)v.Clone();
610
611 if (vx)
612 {
613 fNvtx++;
614 fVertices->Add(vx);
615 }
616
617 // Create connecting track and update 4-momentum and charge for current vertex
618 if (connect)
619 {
620 NcTrack* t=new NcTrack();
622 t->SetEndPoint(v.GetPosition());
623 t->SetCharge(v.GetCharge());
624 t->Set4Momentum((Nc4Vector&)v);
625
626 AddTrack(t,0);
627
628 if (!fConnects)
629 {
630 fConnects=new TObjArray(fNvmax);
631 if (!fTrackCopy) fConnects->SetOwner();
632 }
633 fConnects->Add(t);
634 }
635}
636
637void NcVertex::Data(TString f,TString u)
638{
651
652 const char* name=GetName();
653 const char* title=GetTitle();
654 cout << " *NcVertex::Data*";
655 if (strlen(name)) cout << " Name : " << GetName();
656 if (strlen(title)) cout << " Title : " << GetTitle();
657 cout << endl;
658 cout << " Id : " << fUserId << " Invmass : " << GetInvmass()
659 << " Charge : " << GetCharge() << " Momentum : " << GetMomentum()
660 << " Ntracks : " << GetNtracks() << endl;
661 cout << " Nvertices : " << fNvtx << " Njets : " << fNjets
662 << " Energy scale : " << fEscale << " GeV" << endl;
663 cout << " ";
665 cout << " Position";
666 NcPosition::Data(f,u);
667}
668
669void NcVertex::List(TString f,TString u,TObjArray* tracks)
670{
689
690 Data(f,u); // Information of the current vertex
691
692 Int_t ntk=0;
693 if (tracks)
694 {
695 ntk=tracks->GetEntries();
696 }
697 else
698 {
699 ntk=GetNtracks();
700 }
701
702 if (!ntk)
703 {
704 cout << " *NcVertex::List* No tracks are present." << endl;
705 return;
706 }
707
708 // The tracks of this vertex
709 TObject* obj;
710 NcTrack* tx;
711 for (Int_t it=1; it<=ntk; it++)
712 {
713 if (tracks)
714 {
715 obj=tracks->At(it-1);
716 if (!obj) continue;
717 if (!obj->InheritsFrom("NcTrack")) continue;
718 tx=(NcTrack*)obj;
719 }
720 else
721 {
722 tx=GetTrack(it);
723 if (!tx) continue;
724 }
725 cout << " ---Track no. " << it << endl;
726 cout << " ";
727 tx->Data(f,u);
728 }
729
730 // The secondary vertices of this vertex
731 NcVertex* v;
732 for (Int_t iv=1; iv<=GetNvertices(); iv++)
733 {
734 v=GetVertex(iv);
735 if (v)
736 {
737 cout << " ---Level 1 sec. vertex no. " << iv << endl;
738 cout << " ";
739 v->Data(f,u);
740 }
741 else
742 {
743 cout << " *NcVertex::List* Error : No sec. vertex present." << endl;
744 }
745 }
746}
747
748void NcVertex::ListAll(TString f,TString u,TObjArray* tracks)
749{
768
769 Data(f,u); // Information of the current vertex
770
771 Int_t ntk=0;
772 if (tracks)
773 {
774 ntk=tracks->GetEntries();
775 }
776 else
777 {
778 ntk=GetNtracks();
779 }
780
781 if (!ntk)
782 {
783 cout << " *NcVertex::ListAll* No tracks are present." << endl;
784 return;
785 }
786
787 // The tracks of this vertex
788 TObject* obj;
789 NcTrack* tx;
790 for (Int_t it=1; it<=ntk; it++)
791 {
792 if (tracks)
793 {
794 obj=tracks->At(it-1);
795 if (!obj) continue;
796 if (!obj->InheritsFrom("NcTrack")) continue;
797 tx=(NcTrack*)obj;
798 }
799 else
800 {
801 tx=GetTrack(it);
802 if (!tx) continue;
803 }
804 cout << " ---Track no. " << it << endl;
805 cout << " ";
806 tx->ListAll(f,u);
807 }
808
809 NcVertex* v=this;
810 Dumps(v,1,f,u); // Information of all sec. vertices
811}
812
813void NcVertex::Dumps(NcVertex* v,Int_t n,TString f,TString u)
814{
820
821 NcVertex* vs;
822 for (Int_t iv=1; iv<=v->GetNvertices(); iv++)
823 {
824 vs=v->GetVertex(iv);
825 if (vs)
826 {
827 cout << " ---Level " << n << " sec. vertex no. " << iv << endl;
828 cout << " ";
829 vs->Data(f,u);
830
831 // The tracks of this vertex
832 NcTrack* t;
833 for (Int_t it=1; it<=vs->GetNtracks(); it++)
834 {
835 t=vs->GetTrack(it);
836 if (t)
837 {
838 cout << " ---Track no. " << it << endl;
839 cout << " ";
840 t->ListAll(f,u);
841 }
842 else
843 {
844 cout << " *NcVertex::Dumps* Error : No track present." << endl;
845 }
846 }
847
848 // Go for next sec. vertex level of this sec. vertex recursively
849 Dumps(vs,n+1,f,u);
850 }
851 else
852 {
853 cout << " *NcVertex::Dumps* Error : No sec. vertex present." << endl;
854 }
855 }
856}
857
859{
865
866 return fNvtx;
867}
868
870{
876
877 if (!fVertices)
878 {
879 cout << " *NcVertex*::GetVertex* No (secondary) vertices present." << endl;
880 return 0;
881 }
882 else
883 {
884 if (i<=0 || i>fNvtx)
885 {
886 cout << " *NcVertex*::GetVertex* Invalid argument i : " << i
887 << " Nvtx = " << fNvtx << endl;
888 return 0;
889 }
890 else
891 {
892 return (NcVertex*)fVertices->At(i-1);
893 }
894 }
895}
896
898{
904
905 NcVertex* vx=0;
906 NcVertex* v=0;
907 if (!fVertices)
908 {
909 cout << " *NcVertex*::GetIdVertex* No (secondary) vertices present." << endl;
910 return 0;
911 }
912 else
913 {
914 for (Int_t i=0; i<fNvtx; i++)
915 {
916 vx=(NcVertex*)fVertices->At(i);
917 if (id == vx->GetId()) v=vx;
918 }
919 return v;
920 }
921}
922
924{
937
938 if (!fVertices)
939 {
940 if (j==0 || j==1)
941 {
942 fVertexCopy=j;
943 }
944 else
945 {
946 cout << "*NcVertex::SetVertexCopy* Invalid argument : " << j << endl;
947 }
948 }
949 else
950 {
951 cout << "*NcVertex::SetVertexCopy* Storage already contained vertices."
952 << " ==> VertexCopy mode not changed." << endl;
953 }
954}
955
957{
965
966 return fVertexCopy;
967}
968
970{
976
977 return fNjets;
978}
979
980NcJet* NcVertex::GetJet(Int_t i) const
981{
987
988 if (!fJets)
989 {
990 cout << " *NcVertex*::GetJet* No jets present." << endl;
991 return 0;
992 }
993 else
994 {
995 if (i<=0 || i>fNjets)
996 {
997 cout << " *NcVertex*::GetJet* Invalid argument i : " << i
998 << " Njets = " << fNjets << endl;
999 return 0;
1000 }
1001 else
1002 {
1003 return (NcJet*)fJets->At(i-1);
1004 }
1005 }
1006}
1007
1009{
1015
1016 NcJet* jx=0;
1017 NcJet* j=0;
1018 if (!fJets)
1019 {
1020 cout << " *NcVertex*::GetIdJet* No jets present." << endl;
1021 return 0;
1022 }
1023 else
1024 {
1025 for (Int_t i=0; i<fNjets; i++)
1026 {
1027 jx=(NcJet*)fJets->At(i);
1028 if (id == jx->GetId()) j=jx;
1029 }
1030 return j;
1031 }
1032}
1033
1035{
1048
1049 if (!fJets)
1050 {
1051 if (j==0 || j==1)
1052 {
1053 fJetCopy=j;
1054 }
1055 else
1056 {
1057 cout << "*NcVertex::SetJetCopy* Invalid argument : " << j << endl;
1058 }
1059 }
1060 else
1061 {
1062 cout << "*NcVertex::SetJetCopy* Storage already contained jets."
1063 << " ==> JetCopy mode not changed." << endl;
1064 }
1065}
1066
1068{
1076
1077 return fJetCopy;
1078}
1079
1081{
1090
1091 Int_t connect=0;
1092 if (fConnects)
1093 {
1094 if (fConnects->FindObject(t)) connect=1;
1095 }
1096 return connect;
1097}
1098
1100{
1109
1110 Int_t jetflag=0;
1111 if (fJetTracks)
1112 {
1113 if (fJetTracks->FindObject(t)) jetflag=1;
1114 }
1115 return jetflag;
1116}
1117
1118void NcVertex::Draw(Int_t secs,Int_t cons,Int_t jets)
1119{
1148
1149 Double_t vec[3]={0,0,0};
1150 NcTrack* tx=0;
1151 NcVertex* vx=0;
1152 NcPosition* r=0;
1153 Nc3Vector p;
1154 Float_t charge;
1155
1156 NcPosition dummy;
1157
1158 if (fLines) delete fLines;
1159 fLines=new TObjArray();
1160 fLines->SetOwner();
1161
1162 Int_t ntk=GetNtracks();
1163 for (Int_t jtk=1; jtk<=ntk; jtk++)
1164 {
1165 tx=GetTrack(jtk);
1166
1167 if (!tx) continue;
1168
1169 charge=tx->GetCharge();
1170
1171 TPolyLine3D* line=new TPolyLine3D();
1172 fLines->Add(line);
1173
1174 if (IsConnectTrack(tx))
1175 {
1176 if (cons==1)
1177 {
1178 r=tx->GetBeginPoint();
1179 if (!r) r=&dummy;
1180 r->GetPosition(vec,"car");
1181 line->SetNextPoint(vec[0],vec[1],vec[2]);
1182 r=tx->GetEndPoint();
1183 if (!r) r=&dummy;
1184 r->GetPosition(vec,"car");
1185 line->SetNextPoint(vec[0],vec[1],vec[2]);
1186 line->SetLineWidth(1);
1187 }
1188 }
1189 else
1190 {
1191 r=tx->GetClosestPoint();
1192 if (!r) r=&dummy;
1193 r->GetPosition(vec,"car");
1194 line->SetNextPoint(vec[0],vec[1],vec[2]);
1195 p=tx->Get3Momentum();
1196 p=p+(*r);
1197 p.GetVector(vec,"car");
1198 line->SetNextPoint(vec[0],vec[1],vec[2]);
1199 line->SetLineWidth(3);
1200 }
1201
1202 line->SetLineColor(kGreen); // Neutral track
1203 if (charge>0) line->SetLineColor(kRed); // Positive track
1204 if (charge<0) line->SetLineColor(kBlue); // Negative track
1205
1206 // Mark tracks belonging to jets
1207 if (IsJetTrack(tx))
1208 {
1209 if (jets==1)
1210 {
1211 line->SetLineWidth(2);
1212 line->SetLineColor(kMagenta);
1213 }
1214 }
1215
1216 line->Draw();
1217 }
1218
1219 // Go for secondary vertices if selected
1220 if (secs==1)
1221 {
1222 Int_t nvtx=GetNvertices();
1223 for (Int_t jvtx=1; jvtx<=nvtx; jvtx++)
1224 {
1225 vx=GetVertex(jvtx);
1226 if (vx) vx->Draw(secs,cons,jets);
1227 }
1228 }
1229}
1230
1231TObjArray* NcVertex::SortJets(Int_t mode,TObjArray* jets,TObjArray* ordered)
1232{
1273
1274 if (ordered) ordered->Clear();
1275
1276 TObjArray* ajets=jets;
1277 if (!ajets) ajets=fJets;
1278
1279 Int_t njets=0;
1280 if (ajets) njets=ajets->GetEntries();
1281
1282 if (!mode || abs(mode)>13 || !jets || !njets) return 0;
1283
1284 if (ordered)
1285 {
1286 ordered->Expand(njets);
1287 }
1288 else
1289 {
1290 if (fSelected) delete fSelected;
1291 fSelected=new TObjArray(njets);
1292 }
1293
1294 Double_t val1,val2; // Values of the observable to be tested upon
1295 TObjArray* arr=0; // Generic sorted array pointer to be used in the logic below
1296
1297 if (ordered)
1298 {
1299 arr=ordered;
1300 }
1301 else
1302 {
1303 arr=fSelected;
1304 }
1305
1306 TObject* obj=0;
1307 NcJet* jx=0;
1308 Int_t nord=0;
1309 for (Int_t i=0; i<njets; i++) // Loop over all jets of the array
1310 {
1311 obj=ajets->At(i);
1312 if (!obj) continue;
1313 if (!obj->InheritsFrom("NcJet")) continue;
1314 jx=(NcJet*)obj;
1315
1316 if (nord == 0) // store the first jet at the first ordered position
1317 {
1318 nord++;
1319 arr->AddAt(jx,nord-1);
1320 continue;
1321 }
1322
1323 for (Int_t j=0; j<=nord; j++) // put jet in the right ordered position
1324 {
1325 if (j == nord) // jet has smallest (mode<0) or largest (mode>0) observable value seen so far
1326 {
1327 nord++;
1328 arr->AddAt(jx,j); // add jet at the end
1329 break; // go for next jet
1330 }
1331
1332 val1=0;
1333 val2=0;
1334
1335 switch (abs(mode))
1336 {
1337 case 1:
1338 val1=jx->GetNtracks();
1339 val2=((NcJet*)arr->At(j))->GetNtracks();
1340 break;
1341 case 2:
1342 val1=jx->GetEnergy(1);
1343 val2=((NcJet*)arr->At(j))->GetEnergy(1);
1344 break;
1345 case 3:
1346 val1=jx->GetMomentum(1);
1347 val2=((NcJet*)arr->At(j))->GetMomentum(1);
1348 break;
1349 case 4:
1350 val1=jx->GetInvmass(1);
1351 val2=((NcJet*)arr->At(j))->GetInvmass(1);
1352 break;
1353 case 5:
1354 val1=jx->GetPt(1);
1355 val2=((NcJet*)arr->At(j))->GetPt(1);
1356 break;
1357 case 6:
1358 val1=jx->GetPl(1);
1359 val2=((NcJet*)arr->At(j))->GetPl(1);
1360 break;
1361 case 7:
1362 val1=jx->GetEt(1);
1363 val2=((NcJet*)arr->At(j))->GetEt(1);
1364 break;
1365 case 8:
1366 val1=jx->GetEl(1);
1367 val2=((NcJet*)arr->At(j))->GetEl(1);
1368 break;
1369 case 9:
1370 val1=jx->GetMt(1);
1371 val2=((NcJet*)arr->At(j))->GetMt(1);
1372 break;
1373 case 10:
1374 val1=jx->GetRapidity();
1375 val2=((NcJet*)arr->At(j))->GetRapidity();
1376 break;
1377 case 11:
1378 val1=jx->GetPseudoRapidity();
1379 val2=((NcJet*)arr->At(j))->GetPseudoRapidity();
1380 break;
1381 case 12:
1382 val1=jx->GetNsignals();
1383 val2=((NcJet*)arr->At(j))->GetNsignals();
1384 break;
1385 case 13:
1386 val1=jx->GetCharge();
1387 val2=((NcJet*)arr->At(j))->GetCharge();
1388 break;
1389 }
1390
1391 if (mode<0 && val1 <= val2) continue;
1392 if (mode>0 && val1 >= val2) continue;
1393
1394 nord++;
1395 for (Int_t k=nord-1; k>j; k--) // create empty position
1396 {
1397 arr->AddAt(arr->At(k-1),k);
1398 }
1399 arr->AddAt(jx,j); // put jet at empty position
1400 break; // go for next jet
1401 }
1402 }
1403
1404 if (ordered)
1405 {
1406 return 0;
1407 }
1408 else
1409 {
1410 return fSelected;
1411 }
1412}
1413
1414TObject* NcVertex::Clone(const char* name) const
1415{
1427
1428 NcVertex* vtx=new NcVertex(*this);
1429 if (name)
1430 {
1431 if (strlen(name)) vtx->SetName(name);
1432 }
1433 return vtx;
1434}
1435
ClassImp(NcVertex)
void GetVector(Double_t *v, TString f, TString u="rad") const
Int_t HasVector() const
Double_t GetPseudoRapidity()
virtual void Data(TString f="car", TString u="rad")
Nc3Vector fV
Definition Nc4Vector.h:74
Double_t GetInvmass(Float_t scale=-1)
Definition NcJet.cxx:703
Double_t GetEnergy(Float_t scale=-1)
Definition NcJet.cxx:628
Double_t GetEl(Float_t scale=-1)
Definition NcJet.cxx:1326
Int_t fNtrk
Definition NcJet.h:83
Double_t GetPl(Float_t scale=-1)
Definition NcJet.cxx:1267
Int_t fNtinit
Definition NcJet.h:80
Int_t GetNtracks(Int_t idmode=0, Int_t chmode=2, Int_t pcode=0)
Definition NcJet.cxx:564
Int_t GetTrackCopy() const
Definition NcJet.cxx:1446
NcTrack * GetTrack(Int_t i) const
Definition NcJet.cxx:751
Double_t GetRapidity()
Definition NcJet.cxx:1385
TObjArray * fSelected
! Temp. array to hold user selected or ordered objects
Definition NcJet.h:88
Double_t GetMomentum(Float_t scale=-1)
Definition NcJet.cxx:659
Int_t GetId() const
Definition NcJet.cxx:1470
NcJet()
Definition NcJet.cxx:121
Double_t GetPt(Float_t scale=-1)
Definition NcJet.cxx:1239
Int_t fTrackCopy
Definition NcJet.h:85
Double_t GetEt(Float_t scale=-1)
Definition NcJet.cxx:1301
Int_t fUserId
Definition NcJet.h:86
virtual void Reset()
Definition NcJet.cxx:296
Float_t fQ
Definition NcJet.h:82
virtual void SetOwner(Bool_t own=kTRUE)
Definition NcJet.cxx:202
TObjArray * fTracks
Definition NcJet.h:84
virtual TObject * Clone(const char *name="") const
Definition NcJet.cxx:2128
void SetId(Int_t id)
Definition NcJet.cxx:1459
Float_t GetCharge() const
Definition NcJet.cxx:740
void SetTrackCopy(Int_t j)
Definition NcJet.cxx:1413
Float_t fEscale
Definition NcJet.h:89
Double_t GetMt(Float_t scale=-1)
Definition NcJet.cxx:1352
Int_t GetNsignals(TString classname="TObject", Int_t par=0) const
Definition NcJet.cxx:1839
void AddTrack(NcTrack &t)
Definition NcJet.cxx:313
void GetPosition(Double_t *r, TString f, TString u="rad", Float_t s=-1) const
NcPosition & GetPosition()
virtual void Data(TString f="car", TString u="rad") const
void ResetPosition()
Handling of the attributes of a reconstructed particle track.
Definition NcTrack.h:19
NcPosition * GetEndPoint()
Definition NcTrack.cxx:1458
NcPosition * GetBeginPoint()
Definition NcTrack.cxx:1435
void Set4Momentum(Nc4Vector &p)
Definition NcTrack.cxx:415
virtual void ListAll(TString f="car", TString u="rad")
Definition NcTrack.cxx:541
void SetCharge(Float_t q)
Definition NcTrack.cxx:444
void SetBeginPoint(NcPosition &p)
Definition NcTrack.cxx:1423
void SetEndPoint(NcPosition &p)
Definition NcTrack.cxx:1446
virtual void Data(TString f="car", TString u="rad")
Definition NcTrack.cxx:455
NcPosition * GetClosestPoint()
Definition NcTrack.cxx:1806
Nc3Vector Get3Momentum(Float_t scale=-1) const
Definition NcTrack.cxx:652
Float_t GetCharge() const
Definition NcTrack.cxx:710
Creation and investigation of an NcVertex.
Definition NcVertex.h:19
TObjArray * fJetTracks
Definition NcVertex.h:65
Int_t fNjets
Definition NcVertex.h:63
virtual void Draw(Option_t *)
Definition NcVertex.h:51
void SetVertexCopy(Int_t j)
Definition NcVertex.cxx:923
TObjArray * SortJets(Int_t mode=-1, TObjArray *jets=0, TObjArray *ordered=0)
Int_t fJetCopy
Definition NcVertex.h:66
virtual ~NcVertex()
Definition NcVertex.cxx:230
virtual TObject * Clone(const char *name="") const
void SetNjmax(Int_t n=2)
Definition NcVertex.cxx:400
void SetNvmax(Int_t n=2)
Definition NcVertex.cxx:377
void Dumps(NcVertex *v, Int_t n, TString f, TString u)
Definition NcVertex.cxx:813
virtual void Reset()
Definition NcVertex.cxx:423
virtual void ListAll(TString f="car", TString u="rad", TObjArray *tracks=0)
Definition NcVertex.cxx:748
void SetJetCopy(Int_t j)
TObjArray * fVertices
Definition NcVertex.h:59
virtual void Data(TString f="car", TString u="rad")
Definition NcVertex.cxx:637
TObjArray * fLines
! Array to (temporarily) store the 3D lines for the event display
Definition NcVertex.h:67
NcJet * GetIdJet(Int_t id) const
Int_t GetNvertices() const
Definition NcVertex.cxx:858
Int_t IsJetTrack(NcTrack *t) const
virtual void SetOwner(Bool_t own=kTRUE)
Definition NcVertex.cxx:265
NcVertex * GetIdVertex(Int_t id) const
Definition NcVertex.cxx:897
Int_t GetNjets() const
Definition NcVertex.cxx:969
TObjArray * fJets
Definition NcVertex.h:64
Int_t fNvmax
Definition NcVertex.h:57
Int_t GetVertexCopy() const
Definition NcVertex.cxx:956
void AddJet(NcJet &j, Int_t tracks=1)
Definition NcVertex.cxx:500
virtual void List(TString f="car", TString u="rad", TObjArray *tracks=0)
Definition NcVertex.cxx:669
Int_t fNjmax
Definition NcVertex.h:62
Int_t fVertexCopy
Definition NcVertex.h:61
void Init()
Definition NcVertex.cxx:192
Int_t GetJetCopy() const
Int_t IsConnectTrack(NcTrack *t) const
Int_t fNvtx
Definition NcVertex.h:58
TObjArray * fConnects
Definition NcVertex.h:60
NcVertex * GetVertex(Int_t i) const
Definition NcVertex.cxx:869
void AddVertex(NcVertex &v, Int_t connect=1)
Definition NcVertex.cxx:568
void ResetVertices()
Definition NcVertex.cxx:461
NcJet * GetJet(Int_t i) const
Definition NcVertex.cxx:980