ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/dhidas/OSUAnalysis/Tools/test/TestParticle.h
Revision: 1.1.1.1 (vendor branch)
Committed: Thu Dec 1 16:28:47 2011 UTC (13 years, 5 months ago) by dhidas
Content type: text/plain
Branch: dhidas, MAIN
CVS Tags: START, HEAD
Changes since 1.1: +0 -0 lines
Log Message:
osu copy modified

File Contents

# User Rev Content
1 dhidas 1.1 #include "cute/cute.h"
2     #include "cute/cute_suite.h"
3    
4     #include "../interface/RecoObjects/Particle.h"
5    
6     using namespace BAT;
7    
8     struct TestParticle {
9     private:
10     ParticlePointer particle1, particle2, particle3, particleInBarrelRegion, particleInCrack, particleInEndcap;
11     ParticlePointer zParticle1, zParticle2;
12     FourVector combinedVector;
13    
14     public:
15     TestParticle() :
16     particle1(new Particle(20., 10., 0., 0.)),
17     particle2(new Particle(20., -10., 0., 0.)),
18     particle3(new Particle(*particle1 + *particle2)),
19     particleInBarrelRegion(new Particle(30., 20., -20., 0.)),
20     particleInCrack(new Particle(25., 0., 10., -22.)),
21     particleInEndcap(new Particle(20., 5., 5., -20.)),
22     zParticle1(new Particle(100., 79., -13., -5.)),
23     zParticle2(new Particle(100., 99., 13., 5.)),
24     combinedVector(FourVector(particle1->getFourVector() + particle2->getFourVector())) {
25     particle1->setD0(180.);
26    
27     combinedVector = FourVector(particle1->getFourVector() + particle2->getFourVector());
28    
29     assert(fabs(particleInBarrelRegion->eta()) < 1.4442);
30    
31     assert(fabs(particleInEndcap->eta()) > 1.5660);
32    
33     assert(fabs(particleInCrack->eta()) > 1.4442);
34     assert(fabs(particleInCrack->eta()) < 1.5660);
35    
36     zParticle1->setCharge(-1);
37     zParticle2->setCharge(1);
38     }
39    
40     void testAsignOperator() {
41     particle3 = particle1;
42     ASSERT_EQUAL(particle1->mass(), particle3->mass());
43     ASSERT_EQUAL(particle1->getFourVector(), particle3->getFourVector());
44     }
45    
46     void testPlusOperatorCorrectFourvector() {
47     ASSERT_EQUAL(particle3->getFourVector(), combinedVector);
48     }
49    
50     void testPlusOperatorCorrectMass() {
51     ASSERT_EQUAL(combinedVector.M(), particle3->mass());
52     }
53    
54     void testDeltaEta() {
55     float deltaEta = fabs(particle1->eta() - particle2->eta());
56     ASSERT_EQUAL(deltaEta, particle1->deltaEta(particle2));
57     }
58    
59     void testDeltaPhi() {
60     float deltaPhi = particle1->getFourVector().DeltaPhi(particle2->getFourVector());
61     ASSERT_EQUAL(deltaPhi, particle1->deltaPhi(particle2));
62     }
63    
64     void testDeltaR() {
65     float deltaR = particle1->getFourVector().DeltaR(particle2->getFourVector());
66     ASSERT_EQUAL(deltaR, particle1->deltaR(particle2));
67     }
68    
69     void testIsWithinDR() {
70     ParticlePointer particle(new Particle(20., 9.99, 0., 0.));
71     ASSERT_EQUAL(true, particle1->isWithinDeltaR(0.3, particle));
72     }
73    
74     void testIsNotWithinDR() {
75     ParticlePointer particle(new Particle(20., -9.99, 0., 0.));
76     ASSERT_EQUAL(false, particle1->isWithinDeltaR(0.3, particle));
77     }
78    
79     void testStandardConstructor() {
80     Particle particle;
81     ASSERT_EQUAL(0., particle.energy());
82     ASSERT_EQUAL(0., particle.px());
83     ASSERT_EQUAL(0., particle.py());
84     ASSERT_EQUAL(0., particle.pz());
85     ASSERT_EQUAL(0., particle.mass());
86     ASSERT_EQUAL(0., particle.massFromEnergyAndMomentum());
87     }
88    
89     void testFourvectorConstructor() {
90     Particle particle(5., 4., 0., 0.);
91     ASSERT_EQUAL(5., particle.energy());
92     ASSERT_EQUAL(4., particle.px());
93     ASSERT_EQUAL(0., particle.py());
94     ASSERT_EQUAL(0., particle.pz());
95     ASSERT_EQUAL(3., particle.massFromEnergyAndMomentum());
96     }
97    
98     void testParticleConstructor() {
99     Particle particle(*particle1);
100     ASSERT_EQUAL(particle1->energy(), particle.energy());
101     ASSERT_EQUAL(particle1->px(), particle.px());
102     ASSERT_EQUAL(particle1->py(), particle.py());
103     ASSERT_EQUAL(particle1->pz(), particle.pz());
104     }
105    
106     void testSetMass() {
107     particle1->setMass(200.);
108     ASSERT_EQUAL(200., particle1->mass());
109     }
110    
111     void testDistanceFromInteractionPointAliasD0() {
112     ASSERT_EQUAL(180., particle1->d0());
113     }
114    
115     void testGetMassFromEnergyAndMomentumIfEquals0() {
116     ASSERT(particle1->mass() != 0);
117     }
118    
119     void testParticleIsInBarrelRegion() {
120     ASSERT(particleInBarrelRegion->isInBarrelRegion());
121     ASSERT(particleInBarrelRegion->isInEndCapRegion() == false);
122     ASSERT(particleInBarrelRegion->isInCrack() == false);
123    
124     }
125    
126     void testParticleInEndcap() {
127     ASSERT(particleInEndcap->isInEndCapRegion());
128     ASSERT(particleInEndcap->isInCrack() == false);
129     ASSERT(particleInEndcap->isInBarrelRegion() == false);
130     }
131    
132     void testParticleInCrack() {
133     ASSERT(particleInCrack->isInCrack());
134     ASSERT(particleInCrack->isInEndCapRegion() == false);
135     ASSERT(particleInCrack->isInBarrelRegion() == false);
136     }
137    
138     void testGetEtaRegionCrack() {
139     ASSERT_EQUAL(0, strcmp("crack", particleInCrack->getEtaRegion()));
140     }
141    
142     void testGetEtaRegionBarrel() {
143     ASSERT_EQUAL(0, strcmp("barrel", particleInBarrelRegion->getEtaRegion()));
144     }
145    
146     void testGetEtaRegionEndcap() {
147     ASSERT_EQUAL(0, strcmp("endcap", particleInEndcap->getEtaRegion()));
148     }
149    
150     void testInvarianMassOfTwoParticles() {
151     TLorentzVector combinedParticle(zParticle1->getFourVector() + zParticle2->getFourVector());
152     ASSERT_EQUAL_DELTA(combinedParticle.M(), zParticle1->invariantMass(zParticle2), 0.0001);
153     }
154    
155     void testInvarianMassOfOneParticles() {
156     ASSERT_EQUAL_DELTA(2 * zParticle1->mass(), zParticle1->invariantMass(zParticle1), 0.0001);
157     }
158    
159     void testRelativePtParallelParticles() {
160     ASSERT_EQUAL_DELTA(0, particle1->relativePtTo(particle2), 0.001);
161     }
162    
163     void testRelativePtOrthogonalParticles() {
164     TVector3 threeVector = particle1->getFourVector().Vect();
165     ASSERT_EQUAL_DELTA(threeVector.Mag(), particle1->relativePtTo(particleInCrack), 0.001);
166     }
167    
168     void testGetClosest() {
169     ParticleCollection particles;
170     particles.push_back(particle1);
171     particles.push_back(particleInEndcap);
172     particles.push_back(particle3);
173     ASSERT_EQUAL(0, particle1->getClosest(particles));
174     }
175    
176     void testGetClosest2() {
177     ParticleCollection particles;
178     particles.push_back(particleInEndcap);
179     particles.push_back(particle1);
180     particles.push_back(particle3);
181     ASSERT_EQUAL(1, particle1->getClosest(particles));
182     }
183    
184     void testCharge() {
185     ASSERT_EQUAL(-1, zParticle1->charge());
186     }
187    
188     void testChargeInCollection() {
189     ParticleCollection particles;
190     particle1->setCharge(-1);
191     particleInEndcap->setCharge(-1);
192     particles.push_back(particle1);
193     particles.push_back(particleInEndcap);
194     particles.push_back(zParticle1);
195     ASSERT_EQUAL(-1, particles.front()->charge());
196     }
197    
198     void testAngle(){
199     ASSERT_EQUAL_DELTA(3.14159, particle1->angle(particle2), 0.00001);
200     }
201     };
202    
203     extern cute::suite make_suite_TestParticle() {
204     cute::suite s;
205    
206     s.push_back(CUTE_SMEMFUN(TestParticle, testPlusOperatorCorrectFourvector));
207     s.push_back(CUTE_SMEMFUN(TestParticle, testAsignOperator));
208     s.push_back(CUTE_SMEMFUN(TestParticle, testPlusOperatorCorrectMass));
209     s.push_back(CUTE_SMEMFUN(TestParticle, testStandardConstructor));
210     s.push_back(CUTE_SMEMFUN(TestParticle, testFourvectorConstructor));
211     s.push_back(CUTE_SMEMFUN(TestParticle, testSetMass));
212     s.push_back(CUTE_SMEMFUN(TestParticle, testDistanceFromInteractionPointAliasD0));
213     s.push_back(CUTE_SMEMFUN(TestParticle, testGetMassFromEnergyAndMomentumIfEquals0));
214     s.push_back(CUTE_SMEMFUN(TestParticle, testParticleIsInBarrelRegion));
215     s.push_back(CUTE_SMEMFUN(TestParticle, testParticleInEndcap));
216     s.push_back(CUTE_SMEMFUN(TestParticle, testParticleInCrack));
217     s.push_back(CUTE_SMEMFUN(TestParticle, testParticleConstructor));
218    
219     s.push_back(CUTE_SMEMFUN(TestParticle, testGetEtaRegionCrack));
220     s.push_back(CUTE_SMEMFUN(TestParticle, testGetEtaRegionBarrel));
221     s.push_back(CUTE_SMEMFUN(TestParticle, testGetEtaRegionEndcap));
222    
223     s.push_back(CUTE_SMEMFUN(TestParticle, testDeltaEta));
224     s.push_back(CUTE_SMEMFUN(TestParticle, testDeltaPhi));
225     s.push_back(CUTE_SMEMFUN(TestParticle, testDeltaR));
226    
227     s.push_back(CUTE_SMEMFUN(TestParticle, testIsWithinDR));
228     s.push_back(CUTE_SMEMFUN(TestParticle, testIsNotWithinDR));
229    
230     s.push_back(CUTE_SMEMFUN(TestParticle, testInvarianMassOfTwoParticles));
231     s.push_back(CUTE_SMEMFUN(TestParticle, testInvarianMassOfOneParticles));
232    
233     s.push_back(CUTE_SMEMFUN(TestParticle, testRelativePtParallelParticles));
234     s.push_back(CUTE_SMEMFUN(TestParticle, testRelativePtOrthogonalParticles));
235     s.push_back(CUTE_SMEMFUN(TestParticle, testGetClosest));
236     s.push_back(CUTE_SMEMFUN(TestParticle, testGetClosest2));
237     s.push_back(CUTE_SMEMFUN(TestParticle, testCharge));
238     s.push_back(CUTE_SMEMFUN(TestParticle, testChargeInCollection));
239     s.push_back(CUTE_SMEMFUN(TestParticle, testAngle));
240    
241     return s;
242     }