Fix: event selection should be called for all cut objects to have proper PID configur...
[u/mrichter/AliRoot.git] / TDPMjet / AliGenDPMjet.cxx
CommitLineData
1a52e0ed 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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// Generator using DPMJET as an external generator
18// The main DPMJET options are accessable for the user through this interface.
19// Uses the TDPMjet implementation of TGenerator.
20
21#include <TDPMjet.h>
22#include <TRandom.h>
23#include <TArrayI.h>
24#include <TParticle.h>
25#include <TGraph.h>
26#include <TDatabasePDG.h>
27#include <TParticlePDG.h>
28#include <TParticleClassPDG.h>
29#include <TPDGCode.h>
30#include <TLorentzVector.h>
07c71c2e 31#include <TClonesArray.h>
9dcc0beb 32#include "AliRunLoader.h"
1a52e0ed 33#include "AliGenDPMjet.h"
34#include "AliGenDPMjetEventHeader.h"
1a52e0ed 35#include "AliRun.h"
f2ba02a4 36#include "AliDpmJetRndm.h"
9dcc0beb 37#include "AliHeader.h"
38#include "AliStack.h"
39#include "AliMC.h"
c5dfa3e4 40#include "AliLog.h"
1a52e0ed 41
f97d4a8e 42ClassImp(AliGenDPMjet)
1a52e0ed 43
44//______________________________________________________________________________
45AliGenDPMjet::AliGenDPMjet()
f97d4a8e 46 :AliGenMC(),
47 fBeamEn(2750.),
f97d4a8e 48 fMinImpactParam(0.),
49 fMaxImpactParam(5.),
50 fICentr(0),
51 fSelectAll(0),
52 fFlavor(0),
53 fTrials(0),
54 fSpectators(1),
55 fSpecn(0),
56 fSpecp(0),
57 fDPMjet(0),
f97d4a8e 58 fNoGammas(0),
59 fLHC(0),
9c97cedd 60 fPi0Decay(1),
717765ce 61 fDecayAll(0),
f97d4a8e 62 fGenImpPar(0.),
3b50c39e 63 fProcess(kDpmMb),
64 fTriggerMultiplicity(0),
65 fTriggerMultiplicityEta(0),
19896767 66 fTriggerMultiplicityPtMin(0),
67 fkTuneForDiff(0),
5fed2e29 68 fProcDiff(0),
69 fFragmentation(kFALSE)
1a52e0ed 70{
71// Constructor
e7c989e4 72 fEnergyCMS = 5500.;
f2ba02a4 73 AliDpmJetRndm::SetDpmJetRandom(GetRandom());
1a52e0ed 74}
75
76
77//______________________________________________________________________________
78AliGenDPMjet::AliGenDPMjet(Int_t npart)
f97d4a8e 79 :AliGenMC(npart),
80 fBeamEn(2750.),
f97d4a8e 81 fMinImpactParam(0.),
82 fMaxImpactParam(5.),
83 fICentr(0),
84 fSelectAll(0),
85 fFlavor(0),
86 fTrials(0),
87 fSpectators(1),
88 fSpecn(0),
89 fSpecp(0),
90 fDPMjet(0),
f97d4a8e 91 fNoGammas(0),
92 fLHC(0),
9c97cedd 93 fPi0Decay(1),
717765ce 94 fDecayAll(0),
f97d4a8e 95 fGenImpPar(0.),
3b50c39e 96 fProcess(kDpmMb),
97 fTriggerMultiplicity(0),
98 fTriggerMultiplicityEta(0),
19896767 99 fTriggerMultiplicityPtMin(0),
100 fkTuneForDiff(0),
5fed2e29 101 fProcDiff(0),
102 fFragmentation(kFALSE)
103
1a52e0ed 104{
105// Default PbPb collisions at 5. 5 TeV
106//
e7c989e4 107 fEnergyCMS = 5500.;
1a52e0ed 108 fName = "DPMJET";
109 fTitle= "Particle Generator using DPMJET";
1a52e0ed 110 SetTarget();
111 SetProjectile();
f2ba02a4 112 fVertex.Set(3);
f2ba02a4 113 AliDpmJetRndm::SetDpmJetRandom(GetRandom());
1a52e0ed 114}
115
ba758f5a 116AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
f97d4a8e 117 :AliGenMC(),
118 fBeamEn(2750.),
f97d4a8e 119 fMinImpactParam(0.),
120 fMaxImpactParam(5.),
121 fICentr(0),
122 fSelectAll(0),
123 fFlavor(0),
124 fTrials(0),
125 fSpectators(1),
126 fSpecn(0),
127 fSpecp(0),
128 fDPMjet(0),
f97d4a8e 129 fNoGammas(0),
130 fLHC(0),
9c97cedd 131 fPi0Decay(1),
717765ce 132 fDecayAll(0),
f97d4a8e 133 fGenImpPar(0.),
3b50c39e 134 fProcess(kDpmMb),
135 fTriggerMultiplicity(0),
136 fTriggerMultiplicityEta(0),
19896767 137 fTriggerMultiplicityPtMin(0),
138 fkTuneForDiff(0),
5fed2e29 139 fProcDiff(0),
140 fFragmentation(kFALSE)
141
ba758f5a 142{
f97d4a8e 143 // Dummy copy constructor
e7c989e4 144 fEnergyCMS = 5500.;
ba758f5a 145}
1a52e0ed 146
147//______________________________________________________________________________
148AliGenDPMjet::~AliGenDPMjet()
149{
150// Destructor
1a52e0ed 151}
1a52e0ed 152//______________________________________________________________________________
153void AliGenDPMjet::Init()
154{
155// Initialization
156
e67e0fb7 157 SetMC(new TDPMjet(fProcess, fAProjectile, fZProjectile, fATarget, fZTarget,
1a52e0ed 158 fBeamEn,fEnergyCMS));
159
35c87559 160 fDPMjet=(TDPMjet*) fMCEvGen;
1a52e0ed 161 //
162 // **** Flag to force central production
163 // fICentr=1. central production forced
164 // fICentr<0 && fICentr>-100 -> bmin = fMinImpactParam, bmax = fMaxImpactParam
165 // fICentr<-99 -> fraction of x-sec. = XSFRAC
166 // fICentr=-1. -> evaporation/fzc suppressed
e2b2a1dd 167 // fICentr<-1. -> evaporation/fzc allowed
cd19c617 168 if (fAProjectile == 1 && TMath::Abs(fZProjectile == 1)) fDPMjet->SetfIdp(1);
ba758f5a 169
1a52e0ed 170 fDPMjet->SetfFCentr(fICentr);
e67e0fb7 171 fDPMjet->SetbRange(fMinImpactParam, fMaxImpactParam);
f97d4a8e 172 fDPMjet->SetPi0Decay(fPi0Decay);
717765ce 173 fDPMjet->SetDecayAll(fDecayAll);
5fed2e29 174 fDPMjet->SetFragmentProd(fFragmentation);
e2b2a1dd 175
176 AliGenMC::Init();
177
1a52e0ed 178//
179// Initialize DPMjet
180//
181 fDPMjet->Initialize();
1a52e0ed 182}
183
184
185//______________________________________________________________________________
186void AliGenDPMjet::Generate()
187{
188// Generate one event
189
c0d429ef 190 Double_t polar[3] = {0,0,0};
191 Double_t origin[3] = {0,0,0};
192 Double_t p[4] = {0};
1a52e0ed 193 Float_t tof;
194
195// converts from mm/c to s
196 const Float_t kconv = 0.001/2.999792458e8;
197 Int_t nt = 0;
198 Int_t jev = 0;
e67e0fb7 199 Int_t kf, ks, imo;
1a52e0ed 200 kf = 0;
1a52e0ed 201 fTrials = 0;
e67e0fb7 202 // Set collision vertex position
203 if (fVertexSmear == kPerEvent) Vertex();
1a52e0ed 204
205 while(1)
206 {
207// Generate one event
208// --------------------------------------------------------------------------
209 fSpecn = 0;
210 fSpecp = 0;
211// --------------------------------------------------------------------------
212 fDPMjet->GenerateEvent();
9c97cedd 213
1a52e0ed 214 fTrials++;
215
8507138f 216 fDPMjet->ImportParticles(&fParticles,"All");
1a52e0ed 217 if (fLHC) Boost();
218
219 // Temporaneo
220 fGenImpPar = fDPMjet->GetBImpac();
41cc7c18 221
222 if(TMath::Abs(fXingAngleY) > 1.e-10) BeamCrossAngle();
223
8507138f 224 Int_t np = fParticles.GetEntriesFast();
3b50c39e 225 //
226 // Multiplicity Trigger
227 if (fTriggerMultiplicity > 0) {
228 Int_t multiplicity = 0;
229 for (Int_t i = 0; i < np; i++) {
230 TParticle * iparticle = (TParticle *) fParticles.At(i);
231
232 Int_t statusCode = iparticle->GetStatusCode();
233
234 // Initial state particle
235 if (statusCode != 1)
236 continue;
237 // eta cut
238 if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta)
239 continue;
240 // pt cut
241 if (iparticle->Pt() < fTriggerMultiplicityPtMin)
242 continue;
243
244 TParticlePDG* pdgPart = iparticle->GetPDG();
245 if (pdgPart && pdgPart->Charge() == 0)
246 continue;
247 ++multiplicity;
248 }
249 //
250 //
251 if (multiplicity < fTriggerMultiplicity) continue;
252 Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
253 }
254
19896767 255
c5dfa3e4 256 if(fkTuneForDiff && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1)) ) {
19896767 257 if(!CheckDiffraction() ) continue;
258 }
259
260
3b50c39e 261 Int_t nc = 0;
262 if (np == 0) continue;
263
1a52e0ed 264 Int_t i;
265 Int_t* newPos = new Int_t[np];
266 Int_t* pSelected = new Int_t[np];
267
268 for (i = 0; i<np; i++) {
269 newPos[i] = i;
270 pSelected[i] = 0;
271 }
272
1a52e0ed 273// First select parent particles
274
275 for (i = 0; i<np; i++) {
8507138f 276 TParticle *iparticle = (TParticle *) fParticles.At(i);
1a52e0ed 277
278// Is this a parent particle ?
279
280 if (Stable(iparticle)) continue;
281
282 Bool_t selected = kTRUE;
283 Bool_t hasSelectedDaughters = kFALSE;
284
285 kf = iparticle->GetPdgCode();
cd19c617 286 if (kf == 92 || kf == 99999) continue;
1a52e0ed 287 ks = iparticle->GetStatusCode();
288// No initial state partons
289 if (ks==21) continue;
1a52e0ed 290 if (!fSelectAll) selected = KinematicSelection(iparticle, 0) &&
291 SelectFlavor(kf);
9c97cedd 292
293
1a52e0ed 294 hasSelectedDaughters = DaughtersSelection(iparticle);
295
9c97cedd 296
1a52e0ed 297// Put particle on the stack if it is either selected or
298// it is the mother of at least one seleted particle
299
300 if (selected || hasSelectedDaughters) {
301 nc++;
302 pSelected[i] = 1;
303 } // selected
304 } // particle loop parents
305
306// Now select the final state particles
307
308
309 for (i=0; i<np; i++) {
8507138f 310 TParticle *iparticle = (TParticle *) fParticles.At(i);
1a52e0ed 311
312// Is this a final state particle ?
313
314 if (!Stable(iparticle)) continue;
315
316 Bool_t selected = kTRUE;
317 kf = iparticle->GetPdgCode();
318 ks = iparticle->GetStatusCode();
319
320// --------------------------------------------------------------------------
321// Count spectator neutrons and protons (ks == 13, 14)
322 if(ks == 13 || ks == 14){
323 if(kf == kNeutron) fSpecn += 1;
324 if(kf == kProton) fSpecp += 1;
325 }
326// --------------------------------------------------------------------------
327
328 if (!fSelectAll) {
329 selected = KinematicSelection(iparticle,0)&&SelectFlavor(kf);
330 if (!fSpectators && selected) selected = (ks == 13 || ks == 14);
331 }
332
333// Put particle on the stack if selected
334
335 if (selected) {
336 nc++;
337 pSelected[i] = 1;
338 } // selected
339 } // particle loop final state
340
341// Write particles to stack
342
343 for (i = 0; i<np; i++) {
8507138f 344 TParticle * iparticle = (TParticle *) fParticles.At(i);
1a52e0ed 345 Bool_t hasMother = (iparticle->GetFirstMother()>=0);
1a52e0ed 346 if (pSelected[i]) {
347
348 kf = iparticle->GetPdgCode();
1a52e0ed 349 ks = iparticle->GetStatusCode();
350
351 p[0] = iparticle->Px();
352 p[1] = iparticle->Py();
353 p[2] = iparticle->Pz();
c0d429ef 354 p[3] = iparticle->Energy();
e67e0fb7 355 origin[0] = fVertex[0]+iparticle->Vx()/10; // [cm]
356 origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
357 origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
358
21391258 359 tof = fTime + kconv*iparticle->T();
1a52e0ed 360
361 imo = -1;
362 TParticle* mother = 0;
363 if (hasMother) {
364 imo = iparticle->GetFirstMother();
8507138f 365 mother = (TParticle *) fParticles.At(imo);
cd19c617 366 imo = (mother->GetPdgCode() != 92 && mother->GetPdgCode() != 99999) ? newPos[imo] : -1;
1a52e0ed 367 } // if has mother
368
9c97cedd 369
370
1a52e0ed 371 Bool_t tFlag = (fTrackIt && (ks == 1));
c0d429ef 372 PushTrack(tFlag, imo, kf,
373 p[0], p[1], p[2], p[3],
374 origin[0], origin[1], origin[2], tof,
375 polar[0], polar[1], polar[2],
376 kPNoProcess, nt, 1., ks);
1a52e0ed 377 KeepTrack(nt);
378 newPos[i] = nt;
379 } // if selected
380 } // particle loop
381 delete[] newPos;
382 delete[] pSelected;
1a52e0ed 383 if (nc>0) {
384 jev += nc;
385 if (jev >= fNpart || fNpart == -1) {
1a52e0ed 386 break;
387 }
1a52e0ed 388 }
389 } // event loop
390 MakeHeader();
391 SetHighWaterMark(nt);
392}
393
1a52e0ed 394//______________________________________________________________________________
395Bool_t AliGenDPMjet::DaughtersSelection(TParticle* iparticle)
396{
397//
398// Looks recursively if one of the daughters has been selected
399//
400// printf("\n Consider daughters %d:",iparticle->GetPdgCode());
401 Int_t imin = -1;
402 Int_t imax = -1;
403 Int_t i;
404 Bool_t hasDaughters = (iparticle->GetFirstDaughter() >=0);
405 Bool_t selected = kFALSE;
406 if (hasDaughters) {
407 imin = iparticle->GetFirstDaughter();
408 imax = iparticle->GetLastDaughter();
409 for (i = imin; i <= imax; i++){
8507138f 410 TParticle * jparticle = (TParticle *) fParticles.At(i);
1a52e0ed 411 Int_t ip = jparticle->GetPdgCode();
412 if (KinematicSelection(jparticle,0)&&SelectFlavor(ip)) {
413 selected=kTRUE; break;
414 }
415 if (DaughtersSelection(jparticle)) {selected=kTRUE; break; }
416 }
417 } else {
418 return kFALSE;
419 }
420 return selected;
421}
422
423
424
425//______________________________________________________________________________
426Bool_t AliGenDPMjet::SelectFlavor(Int_t pid)
427{
428// Select flavor of particle
429// 0: all
430// 4: charm and beauty
431// 5: beauty
432 Bool_t res = 0;
433
434 if (fFlavor == 0) {
435 res = kTRUE;
436 } else {
437 Int_t ifl = TMath::Abs(pid/100);
438 if (ifl > 10) ifl/=10;
439 res = (fFlavor == ifl);
440 }
441//
442// This part if gamma writing is inhibited
443 if (fNoGammas)
444 res = res && (pid != kGamma && pid != kPi0);
445//
446 return res;
447}
448
449//______________________________________________________________________________
450Bool_t AliGenDPMjet::Stable(TParticle* particle)
451{
452// Return true for a stable particle
453//
454
455// if (particle->GetFirstDaughter() < 0 ) return kTRUE;
456 if (particle->GetStatusCode() == 1) return kTRUE;
457 else return kFALSE;
458
459}
460
1a52e0ed 461//______________________________________________________________________________
462void AliGenDPMjet::MakeHeader()
463{
19896767 464// printf("MakeHeader %13.3f \n", fDPMjet->GetBImpac());
1a52e0ed 465// Builds the event header, to be called after each event
466 AliGenEventHeader* header = new AliGenDPMjetEventHeader("DPMJET");
467 ((AliGenDPMjetEventHeader*) header)->SetNProduced(fDPMjet->GetNumStablePc());
468 ((AliGenDPMjetEventHeader*) header)->SetImpactParameter(fDPMjet->GetBImpac());
469 ((AliGenDPMjetEventHeader*) header)->SetTotalEnergy(fDPMjet->GetTotEnergy());
3c349853 470 ((AliGenDPMjetEventHeader*) header)->SetParticipants(fDPMjet->GetProjParticipants(),
471 fDPMjet->GetTargParticipants());
19896767 472
473 if(fProcDiff>0){
474 ((AliGenDPMjetEventHeader*) header)->SetProcessType(fProcDiff);
475 }
476 else
477 ((AliGenDPMjetEventHeader*) header)->SetProcessType(fDPMjet->GetProcessCode());
478
3c349853 479 // Bookkeeping for kinematic bias
1a52e0ed 480 ((AliGenDPMjetEventHeader*) header)->SetTrials(fTrials);
3c349853 481 // Event Vertex
f2ba02a4 482 header->SetPrimaryVertex(fVertex);
21391258 483 header->SetInteractionTime(fTime);
1a52e0ed 484 gAlice->SetGenEventHeader(header);
d2593e7a 485 AddHeader(header);
1a52e0ed 486}
487
9dcc0beb 488void AliGenDPMjet::AddHeader(AliGenEventHeader* header)
489{
490 // Add header to container or runloader
491 if (fContainer) {
492 fContainer->AddHeader(header);
493 } else {
33c3c91a 494 AliRunLoader::Instance()->GetHeader()->SetGenEventHeader(header);
9dcc0beb 495 }
496}
1a52e0ed 497
498
499//______________________________________________________________________________
ba758f5a 500AliGenDPMjet& AliGenDPMjet::operator=(const AliGenDPMjet& /*rhs*/)
1a52e0ed 501{
502// Assignment operator
503 return *this;
504}
505
506
e2b2a1dd 507//______________________________________________________________________________
d2593e7a 508void AliGenDPMjet::FinishRun()
509{
510 // Print run statistics
511 fDPMjet->Dt_Dtuout();
512}
513
19896767 514
e2b2a1dd 515//______________________________________________________________________________
19896767 516Bool_t AliGenDPMjet::CheckDiffraction()
517{
518
519 // printf("AAA\n");
520
521 Int_t np = fParticles.GetEntriesFast();
522
523 Int_t iPart1=-1;
524 Int_t iPart2=-1;
525
526 Double_t y1 = 1e10;
527 Double_t y2 = -1e10;
528
529 const Int_t kNstable=20;
530 const Int_t pdgStable[20] = {
531 22, // Photon
532 11, // Electron
533 12, // Electron Neutrino
534 13, // Muon
535 14, // Muon Neutrino
536 15, // Tau
537 16, // Tau Neutrino
538 211, // Pion
539 321, // Kaon
540 311, // K0
541 130, // K0s
542 310, // K0l
543 2212, // Proton
544 2112, // Neutron
545 3122, // Lambda_0
546 3112, // Sigma Minus
547 3222, // Sigma Plus
548 3312, // Xsi Minus
549 3322, // Xsi0
550 3334 // Omega
551 };
d2593e7a 552
19896767 553 for (Int_t i = 0; i < np; i++) {
554 TParticle * part = (TParticle *) fParticles.At(i);
555
556 Int_t statusCode = part->GetStatusCode();
557
558 // Initial state particle
559 if (statusCode != 1)
560 continue;
561
562 Int_t pdg = TMath::Abs(part->GetPdgCode());
563 Bool_t isStable = kFALSE;
564 for (Int_t i1 = 0; i1 < kNstable; i1++) {
565 if (pdg == pdgStable[i1]) {
566 isStable = kTRUE;
567 break;
568 }
569 }
570 if(!isStable)
571 continue;
572
573 Double_t y = part->Y();
574
575 if (y < y1)
576 {
577 y1 = y;
578 iPart1 = i;
579 }
580 if (y > y2)
581 {
582 y2 = y;
583 iPart2 = i;
584 }
585 }
586
587 if(iPart1<0 || iPart2<0) return kFALSE;
588
589 y1=TMath::Abs(y1);
590 y2=TMath::Abs(y2);
591
592 TParticle * part1 = (TParticle *) fParticles.At(iPart1);
593 TParticle * part2 = (TParticle *) fParticles.At(iPart2);
594
595 Int_t pdg1 = part1->GetPdgCode();
596 Int_t pdg2 = part2->GetPdgCode();
597
598
599 Int_t iPart = -1;
600 if (pdg1 == 2212 && pdg2 == 2212)
601 {
602 if(y1 > y2)
603 iPart = iPart1;
604 else if(y1 < y2)
605 iPart = iPart2;
606 else {
607 iPart = iPart1;
608 if((AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.)>0.5) iPart = iPart2;
609 }
610 }
611 else if (pdg1 == 2212)
612 iPart = iPart1;
613 else if (pdg2 == 2212)
614 iPart = iPart2;
615
616
617
618
619
620 Double_t M=-1.;
621 if(iPart>0) {
622 TParticle * part = (TParticle *) fParticles.At(iPart);
623 Double_t E= part->Energy();
624 Double_t P= part->P();
625 M= TMath::Sqrt((fEnergyCMS-E-P)*(fEnergyCMS-E+P));
626 }
627
c5dfa3e4 628 Double_t Mmin, Mmax, wSD, wDD, wND;
629
630 if(!GetWeightsDiffraction(M, Mmin, Mmax, wSD, wDD, wND)) return kFALSE;
631 if(M>-1 && M<Mmin) return kFALSE;
632 if(M>Mmax) M=-1;
633
19896767 634
635 Int_t procType=fDPMjet->GetProcessCode();//fPythia->GetMSTI(1);
c5dfa3e4 636 if(procType== 4) return kFALSE;
19896767 637 Int_t proc0=2;
638 if(procType== 7) proc0=1;
639 if(procType== 5 || procType== 6) proc0=0;
640
641
19896767 642 Int_t proc=2;
643 if(M>0) proc=0;
644 else if(proc0==1) proc=1;
645
19896767 646 if(proc==1 && (AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.) > wDD) return kFALSE;
647 if(proc==2 && (AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.) > wND) return kFALSE;
648
649
19896767 650
651 if(proc!=0) {
652 if(proc0!=0) fProcDiff = procType;
653 else fProcDiff = 1;
654 return kTRUE;
655 }
656
c5dfa3e4 657 if(wSD<0) AliError("wSD<0 ! \n");
19896767 658
c5dfa3e4 659 if((AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.)> wSD) return kFALSE;
19896767 660
661 // printf("iPart = %d\n", iPart);
662
663 if(iPart==iPart1) fProcDiff=5;
664 else if(iPart==iPart2) fProcDiff=6;
665 else {
666 printf("EROOR: iPart!=iPart1 && iPart!=iPart2\n");
667
668 }
669
670 return kTRUE;
671}
672
1a52e0ed 673
c5dfa3e4 674
675Bool_t AliGenDPMjet::GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax,
676 Double_t &wSD, Double_t &wDD, Double_t &wND)
677{
678
679 if(TMath::Abs(fEnergyCMS-900)<1 ){
680const Int_t nbin=400;
681Double_t bin[]={
6821.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
6834.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
6847.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
68510.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
68613.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
68715.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
68818.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
68921.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
69024.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
69127.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
69230.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
69333.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
69436.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
69539.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
69642.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
69745.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
69848.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
69951.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
70054.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
70157.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
70260.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
70363.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
70466.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
70569.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
70672.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
70775.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
70878.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
70981.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
71084.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
71187.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
71290.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
71393.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
71496.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
71599.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
716102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
717105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
718108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
719111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
720114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
721117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
722120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
723123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
724126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
725129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
726132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
727135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
728138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
729141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
730144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
731147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
732150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
733153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
734156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
735159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
736162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
737165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
738168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
739171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
740174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
741177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
742180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
743183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
744186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
745189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
746192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
747195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
748198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
749Double_t w[]={
7501.000000, 0.389079, 0.326612, 0.356363, 0.310726, 0.264037,
7510.253810, 0.224655, 0.207990, 0.198149, 0.186803, 0.180209,
7520.178928, 0.161772, 0.162314, 0.158409, 0.148379, 0.143557,
7530.140357, 0.136272, 0.136957, 0.136606, 0.129376, 0.127671,
7540.128406, 0.132239, 0.119311, 0.130227, 0.130233, 0.123312,
7550.115257, 0.120105, 0.119733, 0.117116, 0.110096, 0.117509,
7560.109149, 0.114372, 0.100322, 0.106227, 0.108696, 0.110352,
7570.106748, 0.101475, 0.101837, 0.098585, 0.094433, 0.100148,
7580.096505, 0.100155, 0.103526, 0.098161, 0.093647, 0.100121,
7590.097426, 0.093414, 0.090241, 0.097228, 0.098098, 0.098340,
7600.096779, 0.099265, 0.095101, 0.090342, 0.097469, 0.090663,
7610.093422, 0.093103, 0.089648, 0.096923, 0.088079, 0.089360,
7620.097772, 0.092932, 0.093554, 0.085784, 0.096395, 0.096304,
7630.090183, 0.089255, 0.090265, 0.086262, 0.087044, 0.088965,
7640.085825, 0.095073, 0.085933, 0.091005, 0.091707, 0.092428,
7650.091689, 0.091224, 0.095256, 0.083407, 0.087983, 0.090320,
7660.081580, 0.088077, 0.083478, 0.091309, 0.083734, 0.089906,
7670.100155, 0.092728, 0.086542, 0.078091, 0.085261, 0.094302,
7680.078063, 0.090070, 0.086566, 0.095020, 0.082124, 0.084791,
7690.090624, 0.090236, 0.086344, 0.085706, 0.085913, 0.083107,
7700.092557, 0.081144, 0.091254, 0.096139, 0.079458, 0.088124,
7710.088777, 0.076652, 0.085168, 0.082326, 0.080435, 0.085022,
7720.085693, 0.093957, 0.088134, 0.082347, 0.082139, 0.090980,
7730.078397, 0.093595, 0.091562, 0.081789, 0.085026, 0.080868,
7740.083455, 0.084590, 0.084124, 0.081486, 0.087242, 0.080928,
7750.096392, 0.078324, 0.092093, 0.074267, 0.082925, 0.090717,
7760.081467, 0.080435, 0.078825, 0.075843, 0.088940, 0.081451,
7770.096047, 0.088102, 0.091710, 0.095208, 0.086160, 0.091305,
7780.085406, 0.094432, 0.078227, 0.099870, 0.094140, 0.080130,
7790.090707, 0.083268, 0.082222, 0.088767, 0.084477, 0.088069,
7800.089382, 0.086164, 0.089123, 0.092799, 0.076710, 0.090727,
7810.077097, 0.099905, 0.089733, 0.088101, 0.093705, 0.089215,
7820.085110, 0.086032, 0.083719, 0.079693, 0.088116, 0.090519,
7830.091150, 0.090855, 0.090547, 0.077773, 0.081914, 0.080864,
7840.082935, 0.092952, 0.079390, 0.080255, 0.091123, 0.091331,
7850.095160, 0.089343, 0.083353, 0.087445, 0.094036, 0.084719,
7860.099665, 0.085104, 0.100912, 0.085958, 0.083972, 0.098284,
7870.078318, 0.082042, 0.088007, 0.085469, 0.089984, 0.081181,
7880.098850, 0.086409, 0.089070, 0.081579, 0.089622, 0.089396,
7890.093922, 0.089472, 0.090806, 0.075034, 0.090346, 0.083871,
7900.086931, 0.089207, 0.094425, 0.087830, 0.079537, 0.097316,
7910.096513, 0.092264, 0.082211, 0.083841, 0.081861, 0.092591,
7920.077785, 0.079646, 0.093721, 0.090735, 0.086910, 0.075837,
7930.090729, 0.092800, 0.098704, 0.092441, 0.086404, 0.089344,
7940.083650, 0.082569, 0.085753, 0.091430, 0.085460, 0.095210,
7950.083226, 0.094882, 0.084856, 0.093350, 0.084579, 0.096744,
7960.099211, 0.085142, 0.085499, 0.083395, 0.088352, 0.110418,
7970.093788, 0.096140, 0.082758, 0.097145, 0.089170, 0.090720,
7980.084708, 0.095927, 0.090330, 0.074239, 0.089532, 0.090514,
7990.089823, 0.089709, 0.101840, 0.082676, 0.087157, 0.079221,
8000.096460, 0.108192, 0.088904, 0.084510, 0.096624, 0.099242,
8010.094470, 0.092473, 0.091745, 0.090439, 0.095316, 0.087963,
8020.096400, 0.089479, 0.094880, 0.085964, 0.092775, 0.083200,
8030.095133, 0.090079, 0.088828, 0.087600, 0.094123, 0.089135,
8040.082617, 0.085109, 0.114091, 0.096331, 0.108465, 0.080318,
8050.106576, 0.089671, 0.092023, 0.090722, 0.086603, 0.091788,
8060.098375, 0.082712, 0.102681, 0.098869, 0.089051, 0.109972,
8070.080440, 0.097860, 0.093074, 0.097028, 0.107826, 0.117152,
8080.090968, 0.096790, 0.096725, 0.094641, 0.089535, 0.092561,
8090.095828, 0.084320, 0.089942, 0.105476, 0.087495, 0.089805,
8100.092238, 0.094141, 0.104390, 0.082958, 0.097449, 0.099594,
8110.092640, 0.097332, 0.093223, 0.100183, 0.092511, 0.087035,
8120.088741, 0.097856, 0.116682, 0.091732, 0.097753, 0.094283,
8130.094235, 0.082016, 0.098370, 0.085676, 0.104529, 0.087319,
8140.090289, 0.105314, 0.103634, 0.101261, 0.092764, 0.098217,
8150.098939, 0.096071, 0.096071, 0.094027, 0.092713, 0.089542,
8160.112293, 0.112293, 0.089531, 0.087752};
817wDD = 0.188264;
818wND = 0.102252;
819wSD = -1;
820
821 Mmin = bin[0];
822 Mmax = bin[nbin];
823 if(M<Mmin || M>Mmax) return kTRUE;
824
825 Int_t ibin=nbin-1;
826 for(Int_t i=1; i<=nbin; i++)
827 if(M<=bin[i]) {
828 ibin=i-1;
829 // printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
830 break;
831 }
832 wSD=w[ibin];
833 return kTRUE;
834
835 }
836 else if(TMath::Abs(fEnergyCMS-2760)<1 ){
837
838const Int_t nbin=400;
839Double_t bin[]={
8401.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
8414.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
8427.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
84310.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
84413.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
84515.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
84618.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
84721.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
84824.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
84927.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
85030.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
85133.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
85236.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
85339.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
85442.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
85545.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
85648.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
85751.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
85854.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
85957.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
86060.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
86163.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
86266.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
86369.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
86472.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
86575.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
86678.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
86781.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
86884.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
86987.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
87090.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
87193.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
87296.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
87399.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
874102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
875105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
876108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
877111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
878114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
879117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
880120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
881123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
882126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
883129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
884132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
885135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
886138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
887141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
888144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
889147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
890150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
891153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
892156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
893159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
894162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
895165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
896168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
897171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
898174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
899177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
900180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
901183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
902186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
903189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
904192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
905195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
906198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
907Double_t w[]={
9081.000000, 0.402402, 0.347976, 0.386866, 0.304413, 0.275746,
9090.256941, 0.250439, 0.228486, 0.219225, 0.203368, 0.196124,
9100.180551, 0.169230, 0.159021, 0.157136, 0.154743, 0.160522,
9110.153993, 0.143448, 0.148062, 0.136337, 0.130853, 0.127798,
9120.137576, 0.137530, 0.124175, 0.120225, 0.120774, 0.123584,
9130.121883, 0.114522, 0.118338, 0.119587, 0.106017, 0.125802,
9140.106256, 0.101585, 0.097737, 0.100817, 0.102279, 0.110935,
9150.101429, 0.107629, 0.105802, 0.095688, 0.096617, 0.100985,
9160.101521, 0.100450, 0.111836, 0.088828, 0.102264, 0.101012,
9170.097673, 0.097634, 0.091720, 0.096167, 0.084537, 0.104443,
9180.091966, 0.097204, 0.089456, 0.088273, 0.098220, 0.095151,
9190.088201, 0.085570, 0.088431, 0.077625, 0.088314, 0.084582,
9200.091545, 0.083774, 0.086183, 0.089195, 0.086255, 0.077167,
9210.096118, 0.089881, 0.086206, 0.086968, 0.079827, 0.082002,
9220.083081, 0.076587, 0.081820, 0.092382, 0.082964, 0.080901,
9230.093512, 0.082907, 0.086691, 0.093639, 0.089010, 0.082857,
9240.090795, 0.082403, 0.078602, 0.087284, 0.079638, 0.082905,
9250.077189, 0.084329, 0.075900, 0.082559, 0.084210, 0.070053,
9260.068453, 0.083369, 0.077659, 0.073286, 0.075396, 0.073946,
9270.083293, 0.076235, 0.082184, 0.080104, 0.073755, 0.077369,
9280.068281, 0.084593, 0.074923, 0.069467, 0.072094, 0.077973,
9290.067034, 0.080314, 0.087441, 0.071728, 0.072302, 0.076783,
9300.079931, 0.075557, 0.076318, 0.079029, 0.075126, 0.076859,
9310.080253, 0.074344, 0.083387, 0.087553, 0.084437, 0.076322,
9320.077748, 0.087559, 0.075649, 0.076615, 0.077098, 0.074559,
9330.075540, 0.085883, 0.079269, 0.079866, 0.068922, 0.069770,
9340.068024, 0.077783, 0.086620, 0.086769, 0.068433, 0.078059,
9350.084463, 0.072790, 0.073889, 0.079090, 0.081759, 0.069576,
9360.069160, 0.071695, 0.078569, 0.075727, 0.088055, 0.082395,
9370.079915, 0.075150, 0.073580, 0.069968, 0.071141, 0.065823,
9380.077270, 0.076229, 0.071735, 0.079271, 0.078209, 0.069503,
9390.064732, 0.076312, 0.088579, 0.087271, 0.080566, 0.073527,
9400.071376, 0.068785, 0.071812, 0.072680, 0.067252, 0.059543,
9410.072818, 0.071856, 0.083427, 0.080664, 0.077315, 0.066060,
9420.078772, 0.065442, 0.067255, 0.077676, 0.068306, 0.071578,
9430.059728, 0.073526, 0.078932, 0.070316, 0.067620, 0.067323,
9440.078316, 0.080366, 0.091194, 0.066739, 0.076238, 0.070382,
9450.077118, 0.073822, 0.072830, 0.062947, 0.077375, 0.076284,
9460.070951, 0.086127, 0.071074, 0.076621, 0.070502, 0.070897,
9470.058764, 0.065322, 0.073620, 0.062051, 0.074548, 0.083770,
9480.072502, 0.066823, 0.074192, 0.081570, 0.067340, 0.081896,
9490.080680, 0.072835, 0.069675, 0.078881, 0.072826, 0.069616,
9500.082744, 0.069138, 0.073333, 0.080881, 0.069091, 0.064266,
9510.062849, 0.072846, 0.067462, 0.067229, 0.071319, 0.071099,
9520.069381, 0.073799, 0.076106, 0.075006, 0.073074, 0.092589,
9530.074277, 0.061324, 0.069788, 0.070310, 0.063160, 0.073077,
9540.075447, 0.081013, 0.074102, 0.076565, 0.060192, 0.058326,
9550.071508, 0.072974, 0.065098, 0.060432, 0.062077, 0.075644,
9560.075417, 0.066947, 0.066744, 0.065111, 0.075468, 0.078185,
9570.073216, 0.066502, 0.079582, 0.065405, 0.069828, 0.072165,
9580.071112, 0.064656, 0.080396, 0.066505, 0.063419, 0.066128,
9590.080616, 0.071463, 0.064867, 0.074782, 0.063103, 0.068179,
9600.064911, 0.073029, 0.075746, 0.062264, 0.099126, 0.067890,
9610.074940, 0.070090, 0.073583, 0.056904, 0.063745, 0.063780,
9620.076876, 0.066519, 0.067164, 0.068668, 0.075065, 0.070983,
9630.075751, 0.066317, 0.077520, 0.073139, 0.073961, 0.085492,
9640.074629, 0.059555, 0.081026, 0.059274, 0.055448, 0.084269,
9650.066222, 0.078874, 0.062021, 0.075156, 0.090478, 0.066265,
9660.067845, 0.076653, 0.086671, 0.082362, 0.067246, 0.075975,
9670.072594, 0.068570, 0.095034, 0.065644, 0.070945, 0.066190,
9680.075906, 0.055154, 0.075575, 0.058078, 0.071004, 0.070850,
9690.064374, 0.058251, 0.069430, 0.072293, 0.065484, 0.084197,
9700.090119, 0.091619, 0.067620, 0.079462, 0.063025, 0.068128,
9710.056927, 0.076351, 0.073869, 0.061597, 0.083741, 0.063762,
9720.064489, 0.074269, 0.068832, 0.058648, 0.069536, 0.074824,
9730.081009, 0.073389, 0.076792, 0.084855, 0.075280, 0.061473,
9740.063840, 0.062891, 0.071328, 0.065250};
975wDD = 0.077845;
976wND = 0.066355;
977wSD = -1;
978
979 Mmin = bin[0];
980 Mmax = bin[nbin];
981 if(M<Mmin || M>Mmax) return kTRUE;
982
983 Int_t ibin=nbin-1;
984 for(Int_t i=1; i<=nbin; i++)
985 if(M<=bin[i]) {
986 ibin=i-1;
987 // printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
988 break;
989 }
990 wSD=w[ibin];
991 return kTRUE;
992
993 }
994 else if(TMath::Abs(fEnergyCMS-7000)<1 ){
995
996const Int_t nbin=400;
997Double_t bin[]={
9981.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500,
9994.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300,
10007.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100,
100110.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900,
100213.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700,
100315.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500,
100418.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300,
100521.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100,
100624.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900,
100727.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700,
100830.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500,
100933.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300,
101036.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100,
101139.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900,
101242.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700,
101345.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500,
101448.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300,
101551.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100,
101654.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900,
101757.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700,
101860.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500,
101963.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300,
102066.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100,
102169.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900,
102272.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700,
102375.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500,
102478.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300,
102581.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100,
102684.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900,
102787.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700,
102890.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500,
102993.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300,
103096.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100,
103199.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900,
1032102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700,
1033105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500,
1034108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300,
1035111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100,
1036114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900,
1037117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700,
1038120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500,
1039123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300,
1040126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100,
1041129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900,
1042132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700,
1043135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500,
1044138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300,
1045141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100,
1046144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900,
1047147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700,
1048150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500,
1049153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300,
1050156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100,
1051159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900,
1052162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700,
1053165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500,
1054168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300,
1055171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100,
1056174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900,
1057177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700,
1058180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500,
1059183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300,
1060186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100,
1061189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900,
1062192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700,
1063195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500,
1064198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
1065Double_t w[]={
10661.000000, 0.526293, 0.446686, 0.437789, 0.366854, 0.333320,
10670.291931, 0.266464, 0.253870, 0.248706, 0.232788, 0.220736,
10680.209886, 0.202741, 0.188617, 0.182767, 0.178748, 0.169039,
10690.175911, 0.169098, 0.171256, 0.146728, 0.144543, 0.159470,
10700.153171, 0.151883, 0.144693, 0.136307, 0.140226, 0.135388,
10710.141317, 0.151121, 0.131209, 0.144039, 0.124688, 0.128020,
10720.119122, 0.121868, 0.122332, 0.119561, 0.115744, 0.102504,
10730.114726, 0.109518, 0.115418, 0.114860, 0.110026, 0.107693,
10740.103005, 0.115985, 0.108629, 0.105937, 0.101056, 0.101228,
10750.113305, 0.110302, 0.104696, 0.107447, 0.099095, 0.107378,
10760.103090, 0.111384, 0.090821, 0.109806, 0.093639, 0.096655,
10770.110416, 0.104446, 0.098530, 0.095105, 0.106641, 0.101804,
10780.091798, 0.094775, 0.104130, 0.088436, 0.119692, 0.099160,
10790.086163, 0.089250, 0.101898, 0.091786, 0.087346, 0.095312,
10800.107186, 0.085671, 0.093283, 0.091992, 0.114654, 0.086172,
10810.084559, 0.097862, 0.079417, 0.094737, 0.089678, 0.105265,
10820.099092, 0.087901, 0.086828, 0.084756, 0.077769, 0.084254,
10830.083262, 0.092935, 0.088858, 0.093377, 0.083569, 0.084771,
10840.084957, 0.084033, 0.095007, 0.076690, 0.087726, 0.097913,
10850.084119, 0.076361, 0.084172, 0.091068, 0.094564, 0.091406,
10860.088405, 0.090355, 0.085388, 0.084586, 0.085752, 0.084298,
10870.091294, 0.081491, 0.075024, 0.082543, 0.088048, 0.074621,
10880.078514, 0.077249, 0.078378, 0.092945, 0.075859, 0.077602,
10890.074592, 0.078181, 0.081527, 0.080865, 0.078854, 0.078237,
10900.085506, 0.089823, 0.072738, 0.078430, 0.077162, 0.081495,
10910.090878, 0.099417, 0.100966, 0.087960, 0.085556, 0.081661,
10920.078066, 0.089059, 0.073564, 0.092704, 0.073148, 0.098057,
10930.067906, 0.079452, 0.090567, 0.082454, 0.077851, 0.079694,
10940.091272, 0.078628, 0.096906, 0.098779, 0.088906, 0.070174,
10950.083822, 0.084241, 0.093237, 0.071062, 0.075771, 0.096405,
10960.098441, 0.086007, 0.069599, 0.078400, 0.083481, 0.081054,
10970.085552, 0.069582, 0.071336, 0.073207, 0.087913, 0.080125,
10980.075189, 0.067217, 0.073509, 0.099694, 0.080781, 0.073943,
10990.062822, 0.076611, 0.087672, 0.077632, 0.063959, 0.077754,
11000.084651, 0.097348, 0.063909, 0.055053, 0.087616, 0.074428,
11010.101165, 0.078446, 0.070683, 0.071162, 0.091516, 0.069641,
11020.070969, 0.069778, 0.083318, 0.066703, 0.074027, 0.067589,
11030.070620, 0.081307, 0.094406, 0.076188, 0.061663, 0.077561,
11040.076159, 0.071851, 0.074417, 0.076136, 0.069073, 0.075450,
11050.070218, 0.089709, 0.079974, 0.082077, 0.076979, 0.070497,
11060.076296, 0.087347, 0.073508, 0.088073, 0.067186, 0.059898,
11070.085495, 0.100152, 0.079468, 0.093783, 0.082680, 0.077272,
11080.081995, 0.068240, 0.071881, 0.073737, 0.072346, 0.079034,
11090.078721, 0.067518, 0.068196, 0.081738, 0.082814, 0.082480,
11100.069072, 0.066853, 0.081523, 0.073588, 0.082308, 0.091641,
11110.072747, 0.084317, 0.072190, 0.079372, 0.067424, 0.077450,
11120.062343, 0.090708, 0.065470, 0.086588, 0.071172, 0.066705,
11130.070670, 0.070407, 0.096111, 0.066738, 0.081249, 0.072882,
11140.075144, 0.060331, 0.074589, 0.076968, 0.085913, 0.072561,
11150.064645, 0.078742, 0.075670, 0.065984, 0.080932, 0.069898,
11160.065303, 0.096856, 0.057690, 0.065720, 0.066545, 0.068521,
11170.068278, 0.069245, 0.086643, 0.063401, 0.070933, 0.070752,
11180.066978, 0.058891, 0.070073, 0.078031, 0.082691, 0.101414,
11190.075814, 0.072790, 0.057622, 0.093002, 0.084660, 0.079216,
11200.070371, 0.070141, 0.076944, 0.067285, 0.078016, 0.077807,
11210.066668, 0.066459, 0.059962, 0.062774, 0.083450, 0.064554,
11220.067887, 0.064165, 0.072782, 0.067285, 0.052710, 0.096824,
11230.071931, 0.064190, 0.074442, 0.082647, 0.055797, 0.078632,
11240.061116, 0.063092, 0.049131, 0.074517, 0.069915, 0.079021,
11250.088656, 0.101045, 0.090432, 0.076460, 0.067451, 0.071381,
11260.069790, 0.077330, 0.077115, 0.084403, 0.065138, 0.056436,
11270.088024, 0.069893, 0.055985, 0.089655, 0.062911, 0.075311,
11280.086679, 0.093645, 0.068632, 0.064498, 0.057677, 0.081391,
11290.062781, 0.075467, 0.061314, 0.073394, 0.084462, 0.068470,
11300.071267, 0.060556, 0.072487, 0.063785, 0.079164, 0.070406,
11310.073394, 0.063168, 0.066968, 0.064125, 0.063954, 0.072504,
11320.058948, 0.057740, 0.083383, 0.067262};
1133wDD = 0.098024;
1134wND = 0.053452;
1135wSD = -1;
1136
1137 Mmin = bin[0];
1138 Mmax = bin[nbin];
1139 if(M<Mmin || M>Mmax) return kTRUE;
1140
1141 Int_t ibin=nbin-1;
1142 for(Int_t i=1; i<=nbin; i++)
1143 if(M<=bin[i]) {
1144 ibin=i-1;
1145 // printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
1146 break;
1147 }
1148 wSD=w[ibin];
1149 return kTRUE;
1150
1151 }
1152
1153 return kFALSE;
1154}
1155
1156
1a52e0ed 1157//______________________________________________________________________________