2518{
2519 Log(2,
"EdbDataProc::MakeVertexTree",
"write vertices into %s ... ",
file);
2520 TFile fil(
file,
"RECREATE");
2521 TTree *vtx= new TTree("vtx","Reconstructed vertices in emulion");
2522
2525
2526 TClonesArray *
tracks =
new TClonesArray(
"EdbSegP");
2527 TClonesArray *segments = new TClonesArray("EdbSegP");
2528 TClonesArray *segmentsf = new TClonesArray("EdbSegP");
2529
2530
2531
2532 Float_t vx, vy, vz;
2533 Float_t meanvx, meanvy, meanvz;
2534 Int_t vID = 0;
2535 Float_t maxaperture;
2536 Float_t probability;
2537 Int_t n;
2538 Int_t flag;
2539 const Int_t maxdim = 1000;
2540
2541 Int_t TrackID[maxdim];
2542 Int_t nholes[maxdim];
2543 Int_t maxgap[maxdim];
2544 Int_t nseg[maxdim];
2545 Int_t npl[maxdim];
2548 Float_t impactparameter[maxdim];
2549 Int_t incoming[maxdim];
2550
2551 Int_t MCEventID[maxdim];
2552 Int_t MCTrackID[maxdim];
2553 Int_t MCTrackPdgCode[maxdim];
2554 Int_t MCMotherID[maxdim];
2555
2556
2557 vtx->Branch("vID",&vID,"vID/I");
2558 vtx->Branch("flag",&flag,"flag/I");
2559 vtx->Branch("vx",&vx,"vx/F");
2560 vtx->Branch("vy",&vy,"vy/F");
2561 vtx->Branch("vz",&vz,"vz/F");
2562 vtx->Branch("meanvx",&meanvx,"meanvx/F");
2563 vtx->Branch("meanvy",&meanvy,"meanvy/F");
2564 vtx->Branch("meanvz",&meanvz,"meanvz/F");
2565 vtx->Branch("maxaperture",&maxaperture,"maxaperture/F");
2566
2567 vtx->Branch("probability",&probability,"probability/F");
2568 vtx->Branch("n",&n,"n/I");
2569 vtx->Branch(
"t.",&
tracks);
2570
2571 vtx->Branch("s", &segments);
2572 vtx->Branch("sf",&segmentsf);
2573
2574 vtx->Branch("TrackID",&TrackID,"TrackID[n]/I");
2575 vtx->Branch("nseg",&nseg,"nseg[n]/I");
2576 vtx->Branch("npl",&npl,"npl[n]/I");
2577 vtx->Branch("nholes",&nholes,"nholes[n]/I");
2578 vtx->Branch("maxgap",&maxgap,"maxgap[n]/I");
2579 vtx->Branch("incoming",&incoming,"incoming[n]/I");
2580 vtx->Branch("impactparameter",&impactparameter,"impactparameter[n]/F");
2581
2582 vtx->Branch("MCEventID", &MCEventID, "MCEventID[n]/I");
2583 vtx->Branch("MCTrackID",&MCTrackID,"MCTrackID[n]/I");
2584 vtx->Branch("MCTrackPdgCode",&MCTrackPdgCode,"MCTrackPdgCode[n]/I");
2585 vtx->Branch("MCMotherID",&MCMotherID,"MCMotherID[n]/I");
2586
2587 int nvtx = vtxarr.GetEntriesFast();
2588
2589 for(int ivtx=0; ivtx<nvtx; ivtx++) {
2590 int itotalseg = 0;
2592 segments->Clear("C");
2593 segmentsf->Clear("C");
2594
2596 if(vertex->
Flag()<0)
continue;
2605 probability = vertex->
V()->
prob();
2606 flag = vertex->
Flag();
2607
2608
2609 for (int itrk = 0; itrk < n; itrk++){
2610
2613
2616 TrackID[itrk] =
track->Track();
2617 nseg[itrk] =
track->N();
2618 npl[itrk] =
track->Npl();
2620 incoming[itrk] = zpos;
2621 nholes[itrk] =
track->N0();
2622 maxgap[itrk] =
track->CheckMaxGap();
2623 impactparameter[itrk] = vertex->
GetVTa(itrk)->
Imp();
2624
2625 MCEventID[itrk] =
track->MCEvt();
2626 MCTrackID[itrk] =
track->MCTrack();
2627 if(MCEventID[itrk]>-1){
2628 MCTrackPdgCode[itrk] =
track->Vid(0);
2629 MCMotherID[itrk] =
track->Aid(0);
2630 }
2631 else {
2632 MCTrackPdgCode[itrk] = -999;
2633 MCMotherID[itrk] = -999;
2634 }
2635
2637
2638 for(int is=0; is<nseg[itrk]; is++) {
2639 s =
track->GetSegment(is);
2640 if(
s)
new((*segments)[itotalseg])
EdbSegP( *
s );
2641 ((
EdbSegP*) segments->At(itotalseg))->ForceCOV(
s->COV());
2642 sf =
track->GetSegmentF(is);
2643 if(sf)
new((*segmentsf)[itotalseg])
EdbSegP( *sf );
2644 ((
EdbSegP*) segmentsf->At(itotalseg))->ForceCOV(sf->COV());
2645 itotalseg++;
2646 }
2647
2648
2649 }
2650 vtx->Fill();
2651 vID++;
2652 }
2653 vtx->Write();
2654 fil.Close();
2655 Log(2,
"EdbDataProc::MakeVertexTree",
"%d vertices are written",nvtx);
2656 return nvtx;
2657}
Float_t Imp() const
Definition: EdbVertex.h:49
Int_t Zpos() const
Definition: EdbVertex.h:47
Float_t VX() const
Definition: EdbVertex.h:133
Float_t X() const
Definition: EdbVertex.h:130
EdbVTA * GetVTa(int i)
Definition: EdbVertex.h:139
VERTEX::Vertex * V() const
Definition: EdbVertex.h:154
Int_t N() const
Definition: EdbVertex.h:121
Float_t VY() const
Definition: EdbVertex.h:134
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
Float_t VZ() const
Definition: EdbVertex.h:135
Float_t Z() const
Definition: EdbVertex.h:132
Int_t Flag() const
Definition: EdbVertex.h:124
Float_t MaxAperture()
Definition: EdbVertex.cxx:252
Float_t Y() const
Definition: EdbVertex.h:131
float prob() const
upper tail $\chi^2$ probability
Definition: VtVertex.C:237
#define NULL
Definition: nidaqmx.h:84