]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliDimuInfoStoreMC.cxx
set ownership of cuts container
[u/mrichter/AliRoot.git] / PWG3 / 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
16/////////////////////////////////////////////////////////////
17//
18// class used to extract and store info of MC particles
19//
20// Author: X-M. Zhang, zhang@clermont.in2p3.fr
21// zhangxm@iopp.ccnu.edu.cn
22/////////////////////////////////////////////////////////////
23
24#include "AliMuonInfoStoreMC.h"
25#include "AliDimuInfoStoreRD.h"
26#include "AliDimuInfoStoreMC.h"
27
28ClassImp(AliDimuInfoStoreMC)
29
30const TString AliDimuInfoStoreMC::fgkStdBranchName("DimuMC");
1195bb6f 31const Int_t AliDimuInfoStoreMC::fgkSourcesN = 6;
fd1d0cb9 32
33//-----------------------------------------------------------------------------
34AliDimuInfoStoreMC::AliDimuInfoStoreMC() :
35AliDimuInfoStoreRD(),
36fIsFull(kFALSE),
37fLorentzP(),
38fSource(-1)
39{
40 //
41 // default constructor
42 //
43}
44
45//-----------------------------------------------------------------------------
46AliDimuInfoStoreMC::AliDimuInfoStoreMC(AliMuonInfoStoreMC* const trk0, AliMuonInfoStoreMC* const trk1, Bool_t full) :
47AliDimuInfoStoreRD(),
48fIsFull(full),
49fLorentzP(),
50fSource(-1)
51{
52 //
53 // default constructor
54 //
55 fMuonRef[0] = trk0;
56 fMuonRef[1] = trk1;
57 fLorentzP = trk0->LorentzP() + trk1->LorentzP();
58 AliDimuInfoStoreRD::FillDimuInfo();
59 if (fIsFull) this->FindDimuonSourceFull();
60 else this->FindDimuonSourceFast();
61}
62
63//-----------------------------------------------------------------------------
64AliDimuInfoStoreMC::AliDimuInfoStoreMC(const AliDimuInfoStoreMC &src) :
65AliDimuInfoStoreRD(src),
66fIsFull(src.fIsFull),
67fLorentzP(src.fLorentzP),
68fSource(src.fSource)
69{
70 //
71 // copy constructor
72 //
73}
74
75//-----------------------------------------------------------------------------
76AliDimuInfoStoreMC& AliDimuInfoStoreMC::operator=(const AliDimuInfoStoreMC &src)
77{
78 //
79 // assignment constructor
80 //
81 if(&src==this) return *this;
82
83 fIsFull = src.fIsFull;
84 fLorentzP = src.fLorentzP;
85 fSource = src.fSource;
86
87 return *this;
88}
89
90
91//-----------------------------------------------------------------------------
92AliDimuInfoStoreMC::~AliDimuInfoStoreMC()
93{
94 //
95 // destructor
96 //
97}
98
99//-----------------------------------------------------------------------------
100void AliDimuInfoStoreMC::FindDimuonSourceFast()
101{
102 // find corr relation of two particles (fast for p-p)
103
104 AliMuonInfoStoreMC *trk0 = (AliMuonInfoStoreMC*)fMuonRef[0].GetObject();
1195bb6f 105 Int_t src0 = trk0->Source();
fd1d0cb9 106 if (src0<0 || src0==4 || src0==3) {
107 fSource=5; return;
108 }
109
110 AliMuonInfoStoreMC *trk1 = (AliMuonInfoStoreMC*)fMuonRef[1].GetObject();
1195bb6f 111 Int_t src1 = trk1->Source();
fd1d0cb9 112 if (src1<0 || src1==4 || src1==3) {
113 fSource=5; return;
114 }
115
116 // Drell-Yan is expected very small at LHC, we ingore it
1195bb6f 117 Int_t np0 = trk0->ParentsN() - 1;
fd1d0cb9 118 if (np0<0) {
119 fSource=5; return;
120 }
1195bb6f 121 Int_t np1 = trk1->ParentsN() - 1;
fd1d0cb9 122 if (np1<0) {
123 fSource=5; return;
124 }
125
126 if (trk0->IsMotherAResonance(np0) &&
127 trk1->IsMotherAResonance(np1) &&
128 trk0->ParentIndex(np0)==trk1->ParentIndex(np1)) {
129 fSource=4; return;
130 }
131
132 if (src0==0 && src1==0) {
133 if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
134 fSource = 1;
135 else
136 fSource = 0;
137 return;
138 }
139
140 if (src0==1 && src1==1) {
141 if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
142 fSource = 3;
143 else
144 fSource = 2;
145 return;
146 }
147
148 fSource = 5;
149 return;
150}