Update master to aliroot
[u/mrichter/AliRoot.git] / EPOS / AliGenEposIsajetToPdgConverter.cxx
1 //
2 // AliGenEposIsajetToPdgConverter.cxx
3 //
4 //  Helper class used by TEpos to insert EPOS internal objects and higher
5 //  resonances to PDG database.
6 //  Quark clusters has has unaltered code, unknown objects have code of
7 //  form 6xxxxxxxx, and higher resonances have codes from Particle Physics
8 //  Review '96
9 //
10 //  Created on: Aug 03, 2009
11 //      Author: Piotr Ostrowski, postrow@if.pw.edu.pl
12 //
13
14
15 #include "TDatabasePDG.h"
16 #include "AliGenEposIsajetToPdgConverter.h"
17
18 ClassImp(AliGenEposIsajetToPdgConverter)
19
20 AliGenEposIsajetToPdgConverter::AliGenEposIsajetToPdgConverter() {
21
22 }
23
24 AliGenEposIsajetToPdgConverter::~AliGenEposIsajetToPdgConverter() { }
25
26 Int_t AliGenEposIsajetToPdgConverter::ConvertIsajetToPdg(Int_t isajet) const{
27   // Perform code conversion, init PDG if first time called
28         if (!fgParticlesAdded) {
29                 AddHigherResonances();
30         }       
31         TDatabasePDG *pdgDb = TDatabasePDG::Instance();
32         Int_t pdg = pdgDb->ConvertIsajetToPdg(isajet);
33         if(pdg == 0) {
34                 pdg = ExtendedMapping(isajet);
35         }
36         if(pdg != 0){
37                 return pdg;
38         }
39         if(isajet / 100000000 == 8 || isajet / 100000000 == 7) {
40                 AddQuarkCluster(isajet);
41                 return isajet;
42         }
43         if(isajet % 100 == 99) {
44                 pdg = AddUnknownObject(isajet);
45         }
46         
47         if (pdg == 0) {
48                 Printf("TEpos: Warning, unknown particle, ISAJET: %d\n",isajet);
49         }
50         return pdg;
51 }
52
53 void AliGenEposIsajetToPdgConverter::AddQuarkCluster(Int_t clusterCode) const {
54   // Add EPOS internal object to the PDG db
55         TDatabasePDG *pdgDb = TDatabasePDG::Instance();
56         if(!pdgDb->GetParticle(clusterCode)) {
57                 pdgDb->AddParticle("Quark cluster", "Quark cluster", 0.0, kFALSE, 0, 0, "EPOS Quark cluster", clusterCode);
58         }
59 }
60
61 Int_t AliGenEposIsajetToPdgConverter::AddUnknownObject(Int_t code) const {
62   // Add EPOS internal object to the PDG db
63         Int_t newCode = 600000000 + code;
64         TDatabasePDG *pdgDb = TDatabasePDG::Instance();
65         if(!pdgDb->GetParticle(newCode)) {
66                 pdgDb->AddParticle("Unknown EPOS particle", "Unknown EPOS particle", 0.0, kFALSE, 0, 0, "Unknown", newCode);
67         }
68         return newCode;
69 }
70
71 Int_t AliGenEposIsajetToPdgConverter::ExtendedMapping(Int_t isajet) const {
72   // Mappings for some internal EPOS objects and resonaces
73         Int_t sign = isajet < 0 ? -1 : 1;
74         isajet*=sign;
75         Int_t retVal = 0;
76         switch(isajet) {
77                 //diquarks
78                 case 1100: retVal=2203; break;
79                 case 1200: retVal=2101; break;
80                 case 1300: retVal=3201; break;
81                 case 2200: retVal=1103; break;
82                 case 2300: retVal=3101; break;
83                 case 3300: retVal=3303; break;
84
85                 case 1112: retVal=2222; break;
86                 case 1113: retVal=12224; break;
87                 case 1114: retVal=12226; break; //delta++
88                 case 2222: retVal=1112; break;
89                 case 2223: retVal=11114; break;
90                 case 2224: retVal=11116; break; //delta-
91                 case 1122: retVal=12212; break;
92                 case 1123: retVal=22212; break;
93                 case 1125: retVal=32212; break;
94                 case 1127: retVal=42212; break; //p*
95                 case 1222: retVal=12112; break;
96                 case 1223: retVal=22112; break;
97                 case 1225: retVal=32112; break;
98                 case 1227: retVal=42112; break; //n*
99                 case 1124: retVal=2122; break;
100                 case 1126: retVal=12214; break;
101                 case 1128: retVal=12126; break; //delta+
102                 case 1224: retVal=1212; break;
103                 case 1226: retVal=12114; break;
104                 case 1228: retVal=11216; break; //delta0
105                 case 1132: retVal=13222; break;
106                 case 1133: retVal=3226; break;
107                 case 1134: retVal=23224; break; //sigma+
108                 case 1236: retVal=13212; break;
109                 case 1237: retVal=3216; break;
110                 case 1239: retVal=23214; break; //sigma0
111                 case 2232: retVal=13112; break;
112                 case 2233: retVal=3116; break;
113                 case 2234: retVal=23114; break; //sigma-
114                 case 1233: retVal=13122; break;
115                 case 1234: retVal=3124; break;
116                 case 1235: retVal=33122; break;
117                 case 1238: retVal=13126; break; //lambda0
118         }
119         return sign*retVal;
120 }
121
122 Bool_t AliGenEposIsajetToPdgConverter::fgParticlesAdded = kFALSE;
123
124 void AliGenEposIsajetToPdgConverter::AddHigherResonances() {
125   // Adds higher resonances known by EPOS but not to the PDG
126         if(fgParticlesAdded)
127                 return;
128         fgParticlesAdded=kTRUE;
129         TDatabasePDG *fPdgDb = TDatabasePDG::Instance();
130         //| 332 | F0(975)     |
131         fPdgDb->AddAntiParticle("F0_bar", -10221);
132         //| 112 | A0(980)     |
133         //| 122 | A+(980)     |
134         //| 1112 | DL++(1620) |
135         fPdgDb->AddParticle("delta++", "delta++", 1.630, kFALSE, 0.145, 6, "Baryon", 2222);
136         fPdgDb->AddAntiParticle("delta++_bar", -2222);
137         //| 1113 | DL++(1700) |
138         fPdgDb->AddParticle("delta++", "delta++", 1.700, kFALSE, 0.300, 6, "Baryon", 12224);
139         fPdgDb->AddAntiParticle("delta++_bar", -12224);
140         //| 1114 | DL++(1925) |
141         fPdgDb->AddParticle("delta++", "delta++", 1.960, kFALSE, 0.360, 6, "Baryon", 12226);
142         fPdgDb->AddAntiParticle("delta++_bar", -12226);
143         //| 2222 | DL-(1620) |
144         fPdgDb->AddParticle("delta-", "delta-", 1.630, kFALSE, 0.145, -3, "Baryon", 1112);
145         fPdgDb->AddAntiParticle("delta-_bar", -1112);
146         //| 2223 | DL-(1700) |
147         fPdgDb->AddParticle("delta-", "delta-", 1.700, kFALSE, 0.300, -3, "Baryon", 11114);
148         fPdgDb->AddAntiParticle("delta-_bar", -11114);
149         //| 2224 | DL-(1925) |
150         fPdgDb->AddParticle("delta-", "delta-", 1.960, kFALSE, 0.360, -3, "Baryon", 11116);
151         fPdgDb->AddAntiParticle("delta-_bar", -11116);
152         //| 1122 | N*+(1440) |
153         fPdgDb->AddParticle("p*", "proton (excited)", 1.440, kFALSE, 0.3, 3, "Baryon", 12212);
154         fPdgDb->AddAntiParticle("p*_bar", -12212);
155         //| 1123 | N*+(1530) |
156         fPdgDb->AddParticle("p*", "proton (excited)", 1.535, kFALSE, 0.150, 3, "Baryon", 22212);
157         fPdgDb->AddAntiParticle("p*_bar", -22212);
158         //| 1125 | N*+(1665) |
159         fPdgDb->AddParticle("p*", "proton (excited)", 1.655, kFALSE, 0.165, 3, "Baryon", 32212);
160         fPdgDb->AddAntiParticle("p*_bar", -32212);
161         //| 1127 | N*+(1710) |
162         fPdgDb->AddParticle("p*", "proton (excited)", 1.710, kFALSE, 0.1, 3, "Baryon", 42212);
163         fPdgDb->AddAntiParticle("p*_bar", -42212);
164         //| 1222 | N*0(1440) |
165         fPdgDb->AddParticle("n*", "neutron (excited)", 1.440, kFALSE, 0.3, 3, "Baryon", 12112);
166         fPdgDb->AddAntiParticle("n*_bar", -12112);
167         //| 1223 | N*0(1530) |
168         fPdgDb->AddParticle("n*", "neutron (excited)", 1.535, kFALSE, 0.150, 3, "Baryon", 22112);
169         fPdgDb->AddAntiParticle("n*_bar", -22112);
170         //| 1225 | N*0(1665) |
171         fPdgDb->AddParticle("n*", "neutron (excited)", 1.655, kFALSE, 0.165, 3, "Baryon", 32112);
172         fPdgDb->AddAntiParticle("n*_bar", -32112);
173         //| 1227 | N*0(1710) |
174         fPdgDb->AddParticle("n*", "neutron (excited)", 1.710, kFALSE, 0.1, 3, "Baryon", 42112);
175         fPdgDb->AddAntiParticle("n*_bar", -42112);
176         //| 1124 | DL+(1620) |
177         fPdgDb->AddParticle("delta+", "delta+", 1.630, kFALSE, 0.145, 3, "Baryon", 2122);
178         fPdgDb->AddAntiParticle("delta+_bar", -2122);
179         //| 1126 | DL+(1700) |
180         fPdgDb->AddParticle("delta+", "delta+", 1.700, kFALSE, 0.300, 3, "Baryon", 12214);
181         fPdgDb->AddAntiParticle("delta+_bar", -12214);
182         //| 1128 | DL+(1925) |
183         fPdgDb->AddParticle("delta+", "delta+", 1.960, kFALSE, 0.360, 3, "Baryon", 12126);
184         fPdgDb->AddAntiParticle("delta+_bar", -12126);
185         //| 1224 | DL0(1620) |
186         fPdgDb->AddParticle("delta0", "delta0", 1.630, kFALSE, 0.145, 0, "Baryon", 1212);
187         fPdgDb->AddAntiParticle("delta0_bar", -1212);
188         //| 1226 | DL0(1700) |
189         fPdgDb->AddParticle("delta0", "delta0", 1.700, kFALSE, 0.300, 0, "Baryon", 12114);
190         fPdgDb->AddAntiParticle("delta0_bar", -12114);
191         //| 1228 | DL0(1925) |
192         fPdgDb->AddParticle("delta0", "delta0", 1.960, kFALSE, 0.360, 0, "Baryon", 11216);
193         fPdgDb->AddAntiParticle("delta0_bar", -11216);
194         //| 1233 | L(1405)    |
195         fPdgDb->AddParticle("lambda0", "lambda0", 1.406, kFALSE, 0.050, 0, "Baryon", 13122);
196         fPdgDb->AddAntiParticle("lambda0_bar", -13122);
197         //| 1234 | L(1520)    |
198         //| 1235 | L(1645)    |
199         fPdgDb->AddParticle("lambda0", "lambda0", 1.670, kFALSE, 0.035, 0, "Baryon", 33122);
200         fPdgDb->AddAntiParticle("lambda0_bar", -33122);
201         //| 1238 | L(1845)    |
202         fPdgDb->AddParticle("lambda0", "lambda0", 1.830, kFALSE, 0.095, 0, "Baryon", 13126);
203         fPdgDb->AddAntiParticle("lambda0_bar", -13126);
204         //| 1236 | S0(1665)   |
205         fPdgDb->AddParticle("sigma0", "sigma0", 1.660, kFALSE, 0.100, 0, "Baryon", 13212);
206         fPdgDb->AddAntiParticle("sigma0_bar", -13212);
207         //| 1237 | S0(1776)   |
208         fPdgDb->AddParticle("sigma0", "sigma0", 1.775, kFALSE, 0.120, 0, "Baryon", 3216);
209         fPdgDb->AddAntiParticle("sigma0_bar", -3216);
210         //| 1239 | S0(1930)   |
211         fPdgDb->AddParticle("sigma0", "sigma0", 1.940, kFALSE, 0.220, 0, "Baryon", 23214);
212         fPdgDb->AddAntiParticle("sigma0_bar", -23214);
213         //| 1132 | S+(1665)   |
214         fPdgDb->AddParticle("sigma+", "sigma+", 1.660, kFALSE, 0.100, 0, "Baryon", 13222);
215         fPdgDb->AddAntiParticle("sigma+_bar", -13222);
216         //| 1133 | S+(1776)   |
217         fPdgDb->AddParticle("sigma+", "sigma+", 1.775, kFALSE, 0.120, 0, "Baryon", 3226);
218         fPdgDb->AddAntiParticle("sigma+_bar", -3226);
219         //| 1134 | S+(1930)   |
220         fPdgDb->AddParticle("sigma+", "sigma+", 1.940, kFALSE, 0.220, 0, "Baryon", 23224);
221         fPdgDb->AddAntiParticle("sigma+_bar", -23224);
222         //| 2232 | S-(1665)   |
223         fPdgDb->AddParticle("sigma-", "sigma-", 1.660, kFALSE, 0.100, 0, "Baryon", 13112);
224         fPdgDb->AddAntiParticle("sigma-_bar", -13112);
225         //| 2233 | S-(1776)   |
226         fPdgDb->AddParticle("sigma-", "sigma-", 1.775, kFALSE, 0.120, 0, "Baryon", 3116);
227         fPdgDb->AddAntiParticle("sigma-_bar", -3116);
228         //| 2234 | S-(1930)   |
229         fPdgDb->AddParticle("sigma-", "sigma-", 1.940, kFALSE, 0.220, 0, "Baryon", 23114);
230         fPdgDb->AddAntiParticle("sigma-_bar", -23114);
231         //+------+------------+
232
233 }