Sets the branch name of the track data which should be analyzed.
Analyses the track data and assigns quality indicator to track. Quality indicators: 1 : Not assigned 2 : All hits of the MC track were found and no additional once 3 : Some hits of the MC track were found and no additional once 4 : 70 % of all hits found belong to this MC track
135 std::vector<std::pair<TLorentzVector, int> > result;
137 if (second.size() == 0)
return result;
138 for (
size_t outer = 0; outer < first.size(); outer++){
140 for (
size_t inner1 = 0; inner1 < (second.size() - 1); inner1++){
143 for (
size_t inner2 = inner1 + 1; inner2 < second.size(); inner2++){
145 PndTrack* pi1Track = second[inner1];
146 PndTrack* pi2Track = second[inner2];
148 std::cout <<
"KTrack: " << kTrack->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack")) <<
" " << std::endl;
149 std::cout <<
"pi1Track: " << pi1Track->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack")) <<
" " << std::endl;
150 std::cout <<
"pi2Track: " << pi2Track->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack")) <<
" " << std::endl;
152 FairMultiLinkedData kTrackLinks = kTrack->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack"));
153 FairMultiLinkedData pi1Links = pi1Track->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack"));
154 FairMultiLinkedData pi2Links = pi2Track->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"MCTrack"));
159 for (
int i = 0;
i < kTrackLinks.GetNLinks();
i++){
160 if (kTrackLinks.GetLink(
i).GetWeight() > countK){
161 countK = kTrackLinks.GetLink(
i).GetWeight();
163 kMcId = kTrackLinks.GetLink(
i).GetIndex();
170 for (
int i = 0;
i < pi1Links.GetNLinks();
i++){
171 if (pi1Links.GetLink(
i).GetWeight() > countPi){
172 countPi = pi1Links.GetLink(
i).GetWeight();
174 pi1McId = pi1Links.GetLink(
i).GetIndex();
181 for (
int i = 0;
i < pi2Links.GetNLinks();
i++){
182 if (pi2Links.GetLink(
i).GetWeight() > countPi){
183 countPi = pi2Links.GetLink(
i).GetWeight();
185 pi2McId = pi2Links.GetLink(
i).GetIndex();
194 TVector3 piMomOrig = pi1Track->
GetParamFirst().GetMomentum();
195 TVector3 pi2MomOrig = pi2Track->
GetParamFirst().GetMomentum();
201 TLorentzVector K, pi1, pi2, D;
203 K.SetXYZM(kMom.X(), kMom.Y(), kMom.Z(), TDatabasePDG::Instance()->GetParticle(321)->Mass());
204 pi1.SetXYZM(piMom.X(), piMom.Y(), piMom.Z(), TDatabasePDG::Instance()->GetParticle(211)->Mass());
205 pi2.SetXYZM(pi2Mom.X(), pi2Mom.Y(), pi2Mom.Z(), TDatabasePDG::Instance()->GetParticle(211)->Mass());
208 std::cout <<
"D: " << D.Px() <<
"/" << D.Py() <<
"/" << D.Pz() <<
" " << D.M() << std::endl;
213 std::cout <<
"D+ Match!" << std::endl;
217 else if (pi1McId == 5){
219 std::cout <<
"D+ Match!" << std::endl;
227 std::cout <<
"D- Match!" << std::endl;
231 else if (pi1McId == 8){
233 std::cout <<
"D- Match!" << std::endl;
239 std::cout <<
"Created D Meson: " << matchIndex << std::endl;
240 result.push_back(std::make_pair(D, matchIndex));
TVector3 CorrectTrackParForPrimaryVertex(FairTrackParP input)
FairTrackParP GetParamFirst()