ATLAS Offline Software
Loading...
Searching...
No Matches
DerclcAng.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
9#include <algorithm>
10#include <cmath>
11#include <iostream>
12
13namespace Trk {
14
15
16//
17// Angular constraints calculation in new data model.
18//
19// cnstV and cnstP values are used!!!
20//-----------------------------------------------
21
23{
24 VKConstraintBase * base_cnst = static_cast<VKConstraintBase*>( cnst);
25 const VKVertex * vk=cnst->getOriginVertex();
26 int NTRK = vk->TrackList.size();
27 int i,j;
28 double Scale=1.; // Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
29
30 double diff=0., aa=0;
31 std::vector<double> deriv(NTRK,0);
32 for(i=0; i<NTRK-1; i++){
33 for(j=i+1; j<NTRK; j++){
34 diff = vk->TrackList[i]->cnstP[1] - vk->TrackList[j]->cnstP[1];
35 while(diff > M_PI) diff -= 2.*M_PI;
36 while(diff < -M_PI) diff += 2.*M_PI;
37 aa += diff*Scale;
38 deriv[i] += Scale;
39 deriv[j] -= Scale;
40 }
41 }
42
43 int numCNST=0; //constraint number. Single constraint in this case
44 base_cnst->h0t[numCNST].X = 0.;
45 base_cnst->h0t[numCNST].Y = 0.;
46 base_cnst->h0t[numCNST].Z = 0.;
47 for(i=0; i<NTRK; i++){
48 base_cnst->f0t[i][numCNST].X = 0.;
49 base_cnst->f0t[i][numCNST].Y = deriv[i];
50 base_cnst->f0t[i][numCNST].Z = 0.;
51 }
52 base_cnst->aa[numCNST]=aa;
53//std::cout.precision(11);
54//std::cout<<" new delta Phi="<<base_cnst->aa[numCNST]<<'\n';
55//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
56// <<base_cnst->f0t[0][numCNST].Z<<'\n';
57//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
58// <<base_cnst->f0t[1][numCNST].Z<<'\n';
59}
60
62{
63 VKConstraintBase * base_cnst = static_cast<VKConstraintBase*>( cnst);
64 const VKVertex * vk=cnst->getOriginVertex();
65 int NTRK = vk->TrackList.size();
66 int i,j;
67 double Scale=1.; // Scaling for better precision VK 28.03.2011 Wrong for error matrix!!! Should always be 1.!!!
68
69 double diff=0., der=0., aa=0;
70 std::vector<double> deriv(NTRK,0);
71 for(i=0; i<NTRK-1; i++){
72 for(j=i+1; j<NTRK; j++){
73 diff = sin(vk->TrackList[i]->cnstP[0] - vk->TrackList[j]->cnstP[0])*Scale;
74 der = Scale;
75 aa += diff;
76 deriv[i] += der;
77 deriv[j] -= der;
78 }
79 }
80
81 int numCNST=0; //constraint number. Single constraint in this case
82 base_cnst->h0t[numCNST].X = 0.;
83 base_cnst->h0t[numCNST].Y = 0.;
84 base_cnst->h0t[numCNST].Z = 0.;
85 for(i=0; i<NTRK; i++){
86 base_cnst->f0t[i][numCNST].X = deriv[i];
87 base_cnst->f0t[i][numCNST].Y = 0.;
88 base_cnst->f0t[i][numCNST].Z = 0.;
89 }
90 base_cnst->aa[numCNST]=aa;
91//std::cout.precision(11);
92//std::cout<<" new delta Theta="<<base_cnst->aa[numCNST]<<'\n';
93//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
94// <<base_cnst->f0t[0][numCNST].Z<<'\n';
95//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
96// <<base_cnst->f0t[1][numCNST].Z<<'\n';
97}
98
100{
101 VKConstraintBase * base_cnst = static_cast<VKConstraintBase*>( cnst);
102 const VKVertex * vk=cnst->getOriginVertex();
103 int NTRK = vk->TrackList.size();
104 double curV[3] = {vk->refIterV[0]+vk->cnstV[0], vk->refIterV[1]+vk->cnstV[1],vk->refIterV[2]+vk->cnstV[2]};
105
106
107 int numCNST=0; //constraint number. Single constraint in this case
108 base_cnst->h0t[numCNST].X = cnst->getA();
109 base_cnst->h0t[numCNST].Y = cnst->getB();
110 base_cnst->h0t[numCNST].Z = cnst->getC();
111 for(int i=0; i<NTRK; i++){
112 base_cnst->f0t[i][numCNST].X = 0.;
113 base_cnst->f0t[i][numCNST].Y = 0.;
114 base_cnst->f0t[i][numCNST].Z = 0.;
115 }
116 base_cnst->aa[numCNST]=cnst->getA()*curV[0]+cnst->getB()*curV[1]+cnst->getC()*curV[2] - cnst->getD() ;
117//std::cout<<" new plane="<<base_cnst->aa[numCNST]<<'\n';
118//std::cout<<(*cnst)<<'\n';
119}
121{
122 VKConstraintBase * base_cnst = dynamic_cast<VKConstraintBase*>( cnst);
123 const VKVertex * vk=cnst->getOriginVertex();
124 int NTRK = vk->TrackList.size();
125 double curV[3] = {vk->refIterV[0]+vk->cnstV[0], vk->refIterV[1]+vk->cnstV[1],vk->refIterV[2]+vk->cnstV[2]};
126 int numCNST=0; //constraint number. Single constraint in this case
127 base_cnst->h0t[numCNST].X = 2.*(curV[0]-cnst->getRefX());
128 base_cnst->h0t[numCNST].Y = 2.*(curV[1]-cnst->getRefY());
129 base_cnst->h0t[numCNST].Z = 0;
130 for(int i=0; i<NTRK; i++){
131 base_cnst->f0t[i][numCNST].X = 0.;
132 base_cnst->f0t[i][numCNST].Y = 0.;
133 base_cnst->f0t[i][numCNST].Z = 0.;
134 }
135 base_cnst->aa[numCNST]=cnst->getRC()*cnst->getRC() - std::pow(curV[0]-cnst->getRefX(),2.) - std::pow(curV[1]-cnst->getRefY(),2.);
136}
137
138} /* End of namespace */
139
#define M_PI
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
std::vector< std::vector< Vect3DF > > f0t
Definition Derivt.h:39
const VKVertex * getOriginVertex() const
Definition Derivt.h:32
std::vector< Vect3DF > h0t
Definition Derivt.h:40
std::vector< double > aa
Definition Derivt.h:38
double getB() const
Definition Derivt.h:117
double getC() const
Definition Derivt.h:118
double getA() const
Definition Derivt.h:116
double getD() const
Definition Derivt.h:119
double getRefX() const
Definition Derivt.h:135
double getRC() const
Definition Derivt.h:134
double getRefY() const
Definition Derivt.h:136
std::vector< std::unique_ptr< VKTrack > > TrackList
void Scale(TH1 *h, double d=1)
Ensure that the ATLAS eigen extensions are properly loaded.
void calcThetaConstraint(VKThetaConstraint *cnst)
Definition DerclcAng.cxx:61
void calcPlaneConstraint(VKPlaneConstraint *cnst)
Definition DerclcAng.cxx:99
void calcPhiConstraint(VKPhiConstraint *cnst)
Definition DerclcAng.cxx:22
void calcRadiusConstraint(VKRadiusConstraint *cnst)