CbmRoot
Loading...
Searching...
No Matches
HalCbmPairSeparationCut2D.cxx
Go to the documentation of this file.
1/* Copyright (C) 2023-2023 Warsaw University of Technology, Warsaw
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Daniel Wielanek [committer] */
5
6#include "CbmHelix.h"
7#include "HalCbmHbtTrack.h"
8#include "HalCbmPairCut.h"
9#include "HalCbmTrack.h"
10
11#include <RtypesCore.h>
12#include <TLorentzVector.h>
13#include <TVector3.h>
14
15#include <Hal/Event.h>
16#include <Hal/Package.h>
17#include <Hal/Parameter.h>
18#include <Hal/Track.h>
19#include <Hal/TwoTrack.h>
20
21
23{
24 SetUnitName("#Delta Z [cm[", 0);
25 SetUnitName("#Delta XY [cm]", 1);
26}
27
28Bool_t HalCbmPairSeparationCut2D::PassHbt(Hal::TwoTrack* pair)
29{
30 TVector3 mom1, mom2;
31 HalCbmHbtTrack* tr1 = static_cast<HalCbmHbtTrack*>(pair->GetTrack1());
32 HalCbmHbtTrack* tr2 = static_cast<HalCbmHbtTrack*>(pair->GetTrack2());
33 tr1->CalculateAtR(fR);
34 tr2->CalculateAtR(fR);
35 mom1 = tr1->GetMomAtCustom();
36 mom2 = tr2->GetMomAtCustom();
37 Double_t dxy = (mom1 - mom2).Pt();
38 if (mom1.Y() < mom2.Y()) dxy = -dxy;
39 Double_t dz = mom1.Z() - mom2.Z();
40 SetValue(dz, 0);
41 SetValue(dxy, 1);
42 if (GetValue(0) > GetMin(0) && GetValue(0) < GetMax(0) && GetValue(1) > GetMin(1) && GetValue(1) < GetMax(1)) {
43 return ForcedUpdate(kFALSE);
44 }
45 return ForcedUpdate(kTRUE);
46}
47
48Bool_t HalCbmPairSeparationCut2D::PassAnaTree(Hal::TwoTrack* pair)
49{
50 TVector3 mom1, mom2;
51 HalCbmTrack* tr1 = static_cast<HalCbmTrack*>(pair->GetTrack1());
52 HalCbmTrack* tr2 = static_cast<HalCbmTrack*>(pair->GetTrack2());
53 CbmHelix& h1 = tr1->GetHelix();
54 CbmHelix& h2 = tr2->GetHelix();
55 h1.Eval(fR + tr1->GetEvent()->GetVertex()->Z(), mom1);
56 h2.Eval(fR + tr2->GetEvent()->GetVertex()->Z(), mom2);
57 Double_t dxy = (mom1 - mom2).Pt();
58 if (mom1.Y() < mom2.Y()) dxy = -dxy;
59 Double_t dz = mom1.Z() - mom2.Z();
60 SetValue(dz, 0);
61 SetValue(dxy, 1);
62 if (GetValue(0) > GetMin(0) && GetValue(0) < GetMax(0) && GetValue(1) > GetMin(1) && GetValue(1) < GetMax(1)) {
63 return ForcedUpdate(kFALSE);
64 }
65 return ForcedUpdate(kTRUE);
66}
67
69{
70 Hal::Package* pack = HalCbmPairCut::Report();
71 pack->AddObject(new Hal::ParameterDouble("R", fR));
72 return pack;
73}
74
76{
77 // TODO Auto-generated destructor stub
78}
TVector3 Eval(Double_t z)
Definition CbmHelix.cxx:31
const TVector3 & GetMomAtCustom() const
void CalculateAtR(Double_t R)
virtual Hal::Package * Report() const
virtual Bool_t PassAnaTree(Hal::TwoTrack *pair)
virtual Bool_t PassHbt(Hal::TwoTrack *pair)
CbmHelix & GetHelix()
Definition HalCbmTrack.h:38