]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AliDimuInfoStoreMC.cxx
fixing the error message
[u/mrichter/AliRoot.git] / PWG / muon / AliDimuInfoStoreMC.cxx
CommitLineData
fd1d0cb9 1/**************************************************************************
2 * Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
27de2dfb 16/* $Id$ */
17
fd1d0cb9 18/////////////////////////////////////////////////////////////
19//
20// class used to extract and store info of MC particles
21//
22// Author: X-M. Zhang, zhang@clermont.in2p3.fr
23// zhangxm@iopp.ccnu.edu.cn
24/////////////////////////////////////////////////////////////
25
26#include "AliMuonInfoStoreMC.h"
27#include "AliDimuInfoStoreRD.h"
28#include "AliDimuInfoStoreMC.h"
29
30ClassImp(AliDimuInfoStoreMC)
31
32const TString AliDimuInfoStoreMC::fgkStdBranchName("DimuMC");
1195bb6f 33const Int_t AliDimuInfoStoreMC::fgkSourcesN = 6;
fd1d0cb9 34
35//-----------------------------------------------------------------------------
36AliDimuInfoStoreMC::AliDimuInfoStoreMC() :
37AliDimuInfoStoreRD(),
38fIsFull(kFALSE),
39fLorentzP(),
40fSource(-1)
41{
42 //
43 // default constructor
44 //
45}
46
47//-----------------------------------------------------------------------------
48AliDimuInfoStoreMC::AliDimuInfoStoreMC(AliMuonInfoStoreMC* const trk0, AliMuonInfoStoreMC* const trk1, Bool_t full) :
49AliDimuInfoStoreRD(),
50fIsFull(full),
51fLorentzP(),
52fSource(-1)
53{
54 //
55 // default constructor
56 //
57 fMuonRef[0] = trk0;
58 fMuonRef[1] = trk1;
59 fLorentzP = trk0->LorentzP() + trk1->LorentzP();
60 AliDimuInfoStoreRD::FillDimuInfo();
61 if (fIsFull) this->FindDimuonSourceFull();
62 else this->FindDimuonSourceFast();
63}
64
65//-----------------------------------------------------------------------------
66AliDimuInfoStoreMC::AliDimuInfoStoreMC(const AliDimuInfoStoreMC &src) :
67AliDimuInfoStoreRD(src),
68fIsFull(src.fIsFull),
69fLorentzP(src.fLorentzP),
70fSource(src.fSource)
71{
72 //
73 // copy constructor
74 //
75}
76
77//-----------------------------------------------------------------------------
78AliDimuInfoStoreMC& AliDimuInfoStoreMC::operator=(const AliDimuInfoStoreMC &src)
79{
80 //
81 // assignment constructor
82 //
83 if(&src==this) return *this;
84
85 fIsFull = src.fIsFull;
86 fLorentzP = src.fLorentzP;
87 fSource = src.fSource;
88
89 return *this;
90}
91
92
93//-----------------------------------------------------------------------------
94AliDimuInfoStoreMC::~AliDimuInfoStoreMC()
95{
96 //
97 // destructor
98 //
99}
100
101//-----------------------------------------------------------------------------
102void AliDimuInfoStoreMC::FindDimuonSourceFast()
103{
104 // find corr relation of two particles (fast for p-p)
105
106 AliMuonInfoStoreMC *trk0 = (AliMuonInfoStoreMC*)fMuonRef[0].GetObject();
1195bb6f 107 Int_t src0 = trk0->Source();
fd1d0cb9 108 if (src0<0 || src0==4 || src0==3) {
109 fSource=5; return;
110 }
111
112 AliMuonInfoStoreMC *trk1 = (AliMuonInfoStoreMC*)fMuonRef[1].GetObject();
1195bb6f 113 Int_t src1 = trk1->Source();
fd1d0cb9 114 if (src1<0 || src1==4 || src1==3) {
115 fSource=5; return;
116 }
117
118 // Drell-Yan is expected very small at LHC, we ingore it
1195bb6f 119 Int_t np0 = trk0->ParentsN() - 1;
fd1d0cb9 120 if (np0<0) {
121 fSource=5; return;
122 }
1195bb6f 123 Int_t np1 = trk1->ParentsN() - 1;
fd1d0cb9 124 if (np1<0) {
125 fSource=5; return;
126 }
127
128 if (trk0->IsMotherAResonance(np0) &&
129 trk1->IsMotherAResonance(np1) &&
130 trk0->ParentIndex(np0)==trk1->ParentIndex(np1)) {
131 fSource=4; return;
132 }
133
134 if (src0==0 && src1==0) {
135 if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
136 fSource = 1;
137 else
138 fSource = 0;
139 return;
140 }
141
142 if (src0==1 && src1==1) {
143 if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
144 fSource = 3;
145 else
146 fSource = 2;
147 return;
148 }
149
150 fSource = 5;
151 return;
152}