7e3900e31fe9aa168b81e04e010ff7d89fa90db2
[u/mrichter/AliRoot.git] / TDPMjet / AliGenDPMjet.cxx
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>
31 #include <TClonesArray.h>
32 #include "AliRunLoader.h"
33 #include "AliGenDPMjet.h"
34 #include "AliGenDPMjetEventHeader.h"
35 #include "AliRun.h"
36 #include "AliDpmJetRndm.h"
37 #include "AliHeader.h"
38 #include "AliStack.h"
39 #include "AliMC.h"
40 #include "AliLog.h"
41
42 ClassImp(AliGenDPMjet)
43
44 //______________________________________________________________________________
45 AliGenDPMjet::AliGenDPMjet()
46     :AliGenMC(), 
47      fBeamEn(2750.),
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),
58      fNoGammas(0),
59      fLHC(0),
60      fPi0Decay(1),
61      fDecayAll(0),
62      fGenImpPar(0.),
63      fProcess(kDpmMb),
64      fTriggerMultiplicity(0),
65      fTriggerMultiplicityEta(0),
66      fTriggerMultiplicityPtMin(0),
67      fkTuneForDiff(0),
68      fProcDiff(0)
69 {
70 // Constructor
71     fEnergyCMS = 5500.;
72     AliDpmJetRndm::SetDpmJetRandom(GetRandom());
73 }
74
75
76 //______________________________________________________________________________
77 AliGenDPMjet::AliGenDPMjet(Int_t npart)
78     :AliGenMC(npart),
79      fBeamEn(2750.),
80      fMinImpactParam(0.),
81      fMaxImpactParam(5.),
82      fICentr(0),
83      fSelectAll(0),
84      fFlavor(0),
85      fTrials(0),
86      fSpectators(1),
87      fSpecn(0),
88      fSpecp(0),
89      fDPMjet(0),
90      fNoGammas(0),
91      fLHC(0),
92      fPi0Decay(1),
93      fDecayAll(0),
94      fGenImpPar(0.),
95      fProcess(kDpmMb),
96      fTriggerMultiplicity(0),
97      fTriggerMultiplicityEta(0),
98      fTriggerMultiplicityPtMin(0),
99      fkTuneForDiff(0),
100      fProcDiff(0)
101 {
102 // Default PbPb collisions at 5. 5 TeV
103 //
104     fEnergyCMS = 5500.;
105     fName = "DPMJET";
106     fTitle= "Particle Generator using DPMJET";
107     SetTarget();
108     SetProjectile();
109     fVertex.Set(3);
110     AliDpmJetRndm::SetDpmJetRandom(GetRandom());
111 }
112
113 AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
114     :AliGenMC(),
115      fBeamEn(2750.),
116      fMinImpactParam(0.),
117      fMaxImpactParam(5.),
118      fICentr(0),
119      fSelectAll(0),
120      fFlavor(0),
121      fTrials(0),
122      fSpectators(1),
123      fSpecn(0),
124      fSpecp(0),
125      fDPMjet(0),
126      fNoGammas(0),
127      fLHC(0),
128      fPi0Decay(1),
129      fDecayAll(0),
130      fGenImpPar(0.),
131      fProcess(kDpmMb),
132      fTriggerMultiplicity(0),
133      fTriggerMultiplicityEta(0),
134      fTriggerMultiplicityPtMin(0),
135      fkTuneForDiff(0),
136      fProcDiff(0)
137 {
138     // Dummy copy constructor
139     fEnergyCMS = 5500.;
140 }
141
142 //______________________________________________________________________________
143 AliGenDPMjet::~AliGenDPMjet()
144 {
145 // Destructor
146 }
147 //______________________________________________________________________________
148 void AliGenDPMjet::Init()
149 {
150 // Initialization
151     
152     SetMC(new TDPMjet(fProcess, fAProjectile, fZProjectile, fATarget, fZTarget, 
153                       fBeamEn,fEnergyCMS));
154
155     fDPMjet=(TDPMjet*) fMCEvGen;
156     //
157     // **** Flag to force central production
158     // fICentr=1. central production forced 
159     // fICentr<0 && fICentr>-100 -> bmin = fMinImpactParam, bmax = fMaxImpactParam        
160     // fICentr<-99 -> fraction of x-sec. = XSFRAC                 
161     // fICentr=-1. -> evaporation/fzc suppressed                  
162     // fICentr<-1. -> evaporation/fzc allowed             
163     if (fAProjectile == 1 && TMath::Abs(fZProjectile == 1)) fDPMjet->SetfIdp(1);
164     
165     fDPMjet->SetfFCentr(fICentr);  
166     fDPMjet->SetbRange(fMinImpactParam, fMaxImpactParam); 
167     fDPMjet->SetPi0Decay(fPi0Decay);
168     fDPMjet->SetDecayAll(fDecayAll);
169
170     AliGenMC::Init();
171     
172 //
173 //  Initialize DPMjet  
174 //    
175     fDPMjet->Initialize();
176 }
177
178
179 //______________________________________________________________________________
180 void AliGenDPMjet::Generate()
181 {
182 // Generate one event
183
184   Double_t polar[3]    =   {0,0,0};
185   Double_t origin[3]   =   {0,0,0};
186   Double_t p[4]        =   {0};
187   Float_t tof;
188
189 //  converts from mm/c to s
190   const Float_t kconv = 0.001/2.999792458e8;
191   Int_t nt  = 0;
192   Int_t jev = 0;
193   Int_t kf, ks, imo;
194   kf = 0;
195   fTrials = 0;
196   //  Set collision vertex position 
197   if (fVertexSmear == kPerEvent) Vertex();
198   
199   while(1)
200   {
201 //    Generate one event
202 // --------------------------------------------------------------------------
203       fSpecn = 0;  
204       fSpecp = 0;
205 // --------------------------------------------------------------------------
206       fDPMjet->GenerateEvent();
207       
208       fTrials++;
209
210       fDPMjet->ImportParticles(&fParticles,"All");      
211       if (fLHC) Boost();
212
213       // Temporaneo
214       fGenImpPar = fDPMjet->GetBImpac();
215
216       if(TMath::Abs(fXingAngleY) > 1.e-10) BeamCrossAngle();
217
218       Int_t np = fParticles.GetEntriesFast();
219       //
220       // Multiplicity Trigger
221       if (fTriggerMultiplicity > 0) {
222         Int_t multiplicity = 0;
223         for (Int_t i = 0; i < np; i++) {
224           TParticle *  iparticle = (TParticle *) fParticles.At(i);
225         
226           Int_t statusCode = iparticle->GetStatusCode();
227         
228           // Initial state particle
229           if (statusCode != 1)
230             continue;
231           // eta cut
232           if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta)
233             continue;
234           // pt cut
235           if (iparticle->Pt() < fTriggerMultiplicityPtMin) 
236             continue;
237           
238           TParticlePDG* pdgPart = iparticle->GetPDG();
239           if (pdgPart && pdgPart->Charge() == 0)
240             continue;
241           ++multiplicity;
242         }
243         //
244         //
245         if (multiplicity < fTriggerMultiplicity) continue;
246         Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
247       }    
248
249
250       if(fkTuneForDiff && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1)) ) {
251         if(!CheckDiffraction() ) continue;
252       }
253
254
255       Int_t nc = 0;
256       if (np == 0) continue;
257
258       Int_t i;
259       Int_t* newPos     = new Int_t[np];
260       Int_t* pSelected  = new Int_t[np];
261
262       for (i = 0; i<np; i++) {
263           newPos[i]    = i;
264           pSelected[i] = 0;
265       }
266       
267 //      First select parent particles
268
269       for (i = 0; i<np; i++) {
270           TParticle *iparticle = (TParticle *) fParticles.At(i);
271
272 // Is this a parent particle ?
273
274           if (Stable(iparticle)) continue;
275
276           Bool_t  selected             =  kTRUE;
277           Bool_t  hasSelectedDaughters =  kFALSE;
278           
279           kf = iparticle->GetPdgCode();
280           if (kf == 92 || kf == 99999) continue;
281           ks = iparticle->GetStatusCode();
282 // No initial state partons
283           if (ks==21) continue;
284           if (!fSelectAll) selected = KinematicSelection(iparticle, 0) && 
285                                SelectFlavor(kf);
286
287           
288           hasSelectedDaughters = DaughtersSelection(iparticle);
289
290
291 // Put particle on the stack if it is either selected or 
292 // it is the mother of at least one seleted particle
293
294           if (selected || hasSelectedDaughters) {
295               nc++;
296               pSelected[i] = 1;
297           } // selected
298       } // particle loop parents
299
300 // Now select the final state particles
301
302
303       for (i=0; i<np; i++) {
304           TParticle *iparticle = (TParticle *) fParticles.At(i);
305
306 // Is this a final state particle ?
307
308           if (!Stable(iparticle)) continue;
309       
310           Bool_t  selected =  kTRUE;
311           kf = iparticle->GetPdgCode();
312           ks = iparticle->GetStatusCode();
313
314 // --------------------------------------------------------------------------
315 // Count spectator neutrons and protons (ks == 13, 14)
316           if(ks == 13 || ks == 14){
317               if(kf == kNeutron) fSpecn += 1;
318               if(kf == kProton)  fSpecp += 1;
319           }
320 // --------------------------------------------------------------------------
321
322           if (!fSelectAll) {
323               selected = KinematicSelection(iparticle,0)&&SelectFlavor(kf);
324               if (!fSpectators && selected) selected = (ks == 13 || ks == 14);
325           }
326
327 // Put particle on the stack if selected
328
329           if (selected) {
330               nc++;
331               pSelected[i] = 1;
332           } // selected
333       } // particle loop final state
334
335 // Write particles to stack
336
337       for (i = 0; i<np; i++) {
338           TParticle *  iparticle = (TParticle *) fParticles.At(i);
339           Bool_t  hasMother   = (iparticle->GetFirstMother()>=0);
340           if (pSelected[i]) {
341               
342               kf   = iparticle->GetPdgCode();         
343               ks   = iparticle->GetStatusCode();              
344               
345               p[0] = iparticle->Px();
346               p[1] = iparticle->Py();
347               p[2] = iparticle->Pz();
348               p[3] = iparticle->Energy();
349               origin[0] = fVertex[0]+iparticle->Vx()/10; // [cm]
350               origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
351               origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
352                     
353               tof = fTime + kconv*iparticle->T();
354               
355               imo = -1;
356               TParticle* mother = 0;
357               if (hasMother) {
358                   imo = iparticle->GetFirstMother();
359                   mother = (TParticle *) fParticles.At(imo);
360                   imo = (mother->GetPdgCode() != 92 && mother->GetPdgCode() != 99999) ? newPos[imo] : -1;
361               } // if has mother   
362
363
364               
365               Bool_t tFlag = (fTrackIt && (ks == 1));
366               PushTrack(tFlag, imo, kf, 
367                         p[0], p[1], p[2], p[3], 
368                         origin[0], origin[1], origin[2], tof,
369                         polar[0], polar[1], polar[2],
370                         kPNoProcess, nt, 1., ks);
371               KeepTrack(nt);
372               newPos[i] = nt;
373           } // if selected
374       } // particle loop
375       delete[] newPos;
376       delete[] pSelected;
377       if (nc>0) {
378           jev += nc;
379           if (jev >= fNpart || fNpart == -1) {
380               break;
381           }
382       }
383   } // event loop
384   MakeHeader();
385   SetHighWaterMark(nt);
386 }
387
388 //______________________________________________________________________________
389 Bool_t AliGenDPMjet::DaughtersSelection(TParticle* iparticle)
390 {
391 //
392 // Looks recursively if one of the daughters has been selected
393 //
394 //    printf("\n Consider daughters %d:",iparticle->GetPdgCode());
395     Int_t imin = -1;
396     Int_t imax = -1;
397     Int_t i;
398     Bool_t hasDaughters = (iparticle->GetFirstDaughter() >=0);
399     Bool_t selected = kFALSE;
400     if (hasDaughters) {
401         imin = iparticle->GetFirstDaughter();
402         imax = iparticle->GetLastDaughter();       
403         for (i = imin; i <= imax; i++){
404             TParticle *  jparticle = (TParticle *) fParticles.At(i);    
405             Int_t ip = jparticle->GetPdgCode();
406             if (KinematicSelection(jparticle,0)&&SelectFlavor(ip)) {
407                 selected=kTRUE; break;
408             }
409             if (DaughtersSelection(jparticle)) {selected=kTRUE; break; }
410         }
411     } else {
412         return kFALSE;
413     }
414     return selected;
415 }
416
417
418
419 //______________________________________________________________________________
420 Bool_t AliGenDPMjet::SelectFlavor(Int_t pid)
421 {
422 // Select flavor of particle
423 // 0: all
424 // 4: charm and beauty
425 // 5: beauty
426     Bool_t res = 0;
427     
428     if (fFlavor == 0) {
429         res = kTRUE;
430     } else {
431         Int_t ifl = TMath::Abs(pid/100);
432         if (ifl > 10) ifl/=10;
433         res = (fFlavor == ifl);
434     }
435 //
436 //  This part if gamma writing is inhibited
437     if (fNoGammas) 
438         res = res && (pid != kGamma && pid != kPi0);
439 //
440     return res;
441 }
442
443 //______________________________________________________________________________
444 Bool_t AliGenDPMjet::Stable(TParticle*  particle)
445 {
446 // Return true for a stable particle
447 //
448     
449 //    if (particle->GetFirstDaughter() < 0 ) return kTRUE;
450     if (particle->GetStatusCode() == 1) return kTRUE;
451     else return kFALSE;
452
453 }
454
455 //______________________________________________________________________________
456 void AliGenDPMjet::MakeHeader()
457 {
458 //  printf("MakeHeader %13.3f \n", fDPMjet->GetBImpac());
459 // Builds the event header, to be called after each event
460     AliGenEventHeader* header = new AliGenDPMjetEventHeader("DPMJET");
461     ((AliGenDPMjetEventHeader*) header)->SetNProduced(fDPMjet->GetNumStablePc());
462     ((AliGenDPMjetEventHeader*) header)->SetImpactParameter(fDPMjet->GetBImpac());
463     ((AliGenDPMjetEventHeader*) header)->SetTotalEnergy(fDPMjet->GetTotEnergy());
464     ((AliGenDPMjetEventHeader*) header)->SetParticipants(fDPMjet->GetProjParticipants(), 
465                                                          fDPMjet->GetTargParticipants());
466
467     if(fProcDiff>0){
468     ((AliGenDPMjetEventHeader*) header)->SetProcessType(fProcDiff);
469     }
470     else 
471       ((AliGenDPMjetEventHeader*) header)->SetProcessType(fDPMjet->GetProcessCode());
472
473     // Bookkeeping for kinematic bias
474     ((AliGenDPMjetEventHeader*) header)->SetTrials(fTrials);
475     // Event Vertex
476     header->SetPrimaryVertex(fVertex);
477     header->SetInteractionTime(fTime);
478     gAlice->SetGenEventHeader(header);    
479     AddHeader(header);
480 }
481
482 void AliGenDPMjet::AddHeader(AliGenEventHeader* header)
483 {
484     // Add header to container or runloader
485     if (fContainer) {
486         fContainer->AddHeader(header);
487     } else {
488         AliRunLoader::Instance()->GetHeader()->SetGenEventHeader(header);
489     }
490 }
491
492
493 //______________________________________________________________________________
494 AliGenDPMjet& AliGenDPMjet::operator=(const  AliGenDPMjet& /*rhs*/)
495 {
496 // Assignment operator
497     return *this;
498 }
499
500
501 //______________________________________________________________________________
502 void AliGenDPMjet::FinishRun()
503 {
504     // Print run statistics
505     fDPMjet->Dt_Dtuout();
506 }
507
508
509 //______________________________________________________________________________
510 Bool_t AliGenDPMjet::CheckDiffraction()
511 {
512
513   //  printf("AAA\n");
514
515    Int_t np = fParticles.GetEntriesFast();
516
517    Int_t iPart1=-1;
518    Int_t iPart2=-1;
519
520    Double_t y1 = 1e10;
521    Double_t y2 = -1e10;
522
523   const Int_t kNstable=20;
524   const Int_t pdgStable[20] = {
525     22,             // Photon
526     11,             // Electron
527     12,             // Electron Neutrino 
528     13,             // Muon 
529     14,             // Muon Neutrino
530     15,             // Tau 
531     16,             // Tau Neutrino
532     211,            // Pion
533     321,            // Kaon
534     311,            // K0
535     130,            // K0s
536     310,            // K0l
537     2212,           // Proton 
538     2112,           // Neutron
539     3122,           // Lambda_0
540     3112,           // Sigma Minus
541     3222,           // Sigma Plus
542     3312,           // Xsi Minus 
543     3322,           // Xsi0
544     3334            // Omega
545   };
546     
547      for (Int_t i = 0; i < np; i++) {
548         TParticle *  part = (TParticle *) fParticles.At(i);
549         
550         Int_t statusCode = part->GetStatusCode();
551         
552         // Initial state particle
553         if (statusCode != 1)
554           continue;
555
556         Int_t pdg = TMath::Abs(part->GetPdgCode());
557         Bool_t isStable = kFALSE;
558         for (Int_t i1 = 0; i1 < kNstable; i1++) {
559           if (pdg == pdgStable[i1]) {
560             isStable = kTRUE;
561             break;
562           }
563         }
564         if(!isStable) 
565           continue;
566
567         Double_t y = part->Y();
568
569         if (y < y1)
570           {
571             y1 = y;
572             iPart1 = i;
573           }
574         if (y > y2)
575         {
576           y2 = y;
577           iPart2 = i;
578         }
579      }
580
581      if(iPart1<0 || iPart2<0) return kFALSE;
582
583      y1=TMath::Abs(y1);
584      y2=TMath::Abs(y2);
585
586      TParticle *  part1 = (TParticle *) fParticles.At(iPart1);
587      TParticle *  part2 = (TParticle *) fParticles.At(iPart2);
588
589      Int_t pdg1 = part1->GetPdgCode();
590      Int_t pdg2 = part2->GetPdgCode();
591
592
593      Int_t iPart = -1;
594      if (pdg1 == 2212 && pdg2 == 2212)
595        {
596          if(y1 > y2) 
597            iPart = iPart1;
598          else if(y1 < y2) 
599            iPart = iPart2;
600          else {
601            iPart = iPart1;
602            if((AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.)>0.5) iPart = iPart2;
603          }
604        }
605      else if (pdg1 == 2212)
606        iPart = iPart1;
607      else if (pdg2 == 2212)
608        iPart = iPart2;
609
610
611
612
613
614      Double_t M=-1.;
615      if(iPart>0) {
616        TParticle *  part = (TParticle *) fParticles.At(iPart);
617        Double_t E= part->Energy();
618        Double_t P= part->P();
619        M= TMath::Sqrt((fEnergyCMS-E-P)*(fEnergyCMS-E+P));
620      }
621
622      Double_t Mmin, Mmax, wSD, wDD, wND;
623
624      if(!GetWeightsDiffraction(M, Mmin, Mmax, wSD, wDD, wND)) return kFALSE;
625      if(M>-1 && M<Mmin) return kFALSE;
626      if(M>Mmax) M=-1;
627
628
629  Int_t procType=fDPMjet->GetProcessCode();//fPythia->GetMSTI(1);
630  if(procType== 4) return kFALSE;
631  Int_t proc0=2;
632  if(procType== 7) proc0=1;
633  if(procType== 5 || procType== 6) proc0=0;
634
635
636  Int_t proc=2;
637  if(M>0) proc=0;
638  else if(proc0==1) proc=1;
639
640  if(proc==1 && (AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.) > wDD) return kFALSE;
641  if(proc==2 && (AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.) > wND) return kFALSE;
642
643
644
645     if(proc!=0) {
646       if(proc0!=0) fProcDiff = procType;
647       else       fProcDiff = 1;
648       return kTRUE;
649     }
650
651     if(wSD<0)  AliError("wSD<0 ! \n");
652
653     if((AliDpmJetRndm::GetDpmJetRandom())->Uniform(0.,1.)> wSD) return kFALSE;
654
655     //    printf("iPart = %d\n", iPart);
656
657     if(iPart==iPart1) fProcDiff=5;
658     else if(iPart==iPart2) fProcDiff=6;
659     else {
660       printf("EROOR:  iPart!=iPart1 && iPart!=iPart2\n");
661
662     }
663
664     return kTRUE;
665 }
666
667
668
669 Bool_t AliGenDPMjet::GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax, 
670                                                        Double_t &wSD, Double_t &wDD, Double_t &wND)
671 {
672
673   if(TMath::Abs(fEnergyCMS-900)<1 ){
674 const Int_t nbin=400;
675 Double_t bin[]={
676 1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500, 
677 4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300, 
678 7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100, 
679 10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900, 
680 13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700, 
681 15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500, 
682 18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300, 
683 21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100, 
684 24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900, 
685 27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700, 
686 30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500, 
687 33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300, 
688 36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100, 
689 39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900, 
690 42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700, 
691 45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500, 
692 48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300, 
693 51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100, 
694 54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900, 
695 57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700, 
696 60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500, 
697 63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300, 
698 66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100, 
699 69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900, 
700 72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700, 
701 75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500, 
702 78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300, 
703 81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100, 
704 84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900, 
705 87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700, 
706 90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500, 
707 93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300, 
708 96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100, 
709 99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900, 
710 102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700, 
711 105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500, 
712 108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300, 
713 111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100, 
714 114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900, 
715 117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700, 
716 120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500, 
717 123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300, 
718 126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100, 
719 129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900, 
720 132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700, 
721 135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500, 
722 138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300, 
723 141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100, 
724 144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900, 
725 147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700, 
726 150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500, 
727 153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300, 
728 156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100, 
729 159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900, 
730 162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700, 
731 165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500, 
732 168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300, 
733 171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100, 
734 174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900, 
735 177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700, 
736 180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500, 
737 183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300, 
738 186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100, 
739 189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900, 
740 192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700, 
741 195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500, 
742 198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
743 Double_t w[]={
744 1.000000, 0.389079, 0.326612, 0.356363, 0.310726, 0.264037, 
745 0.253810, 0.224655, 0.207990, 0.198149, 0.186803, 0.180209, 
746 0.178928, 0.161772, 0.162314, 0.158409, 0.148379, 0.143557, 
747 0.140357, 0.136272, 0.136957, 0.136606, 0.129376, 0.127671, 
748 0.128406, 0.132239, 0.119311, 0.130227, 0.130233, 0.123312, 
749 0.115257, 0.120105, 0.119733, 0.117116, 0.110096, 0.117509, 
750 0.109149, 0.114372, 0.100322, 0.106227, 0.108696, 0.110352, 
751 0.106748, 0.101475, 0.101837, 0.098585, 0.094433, 0.100148, 
752 0.096505, 0.100155, 0.103526, 0.098161, 0.093647, 0.100121, 
753 0.097426, 0.093414, 0.090241, 0.097228, 0.098098, 0.098340, 
754 0.096779, 0.099265, 0.095101, 0.090342, 0.097469, 0.090663, 
755 0.093422, 0.093103, 0.089648, 0.096923, 0.088079, 0.089360, 
756 0.097772, 0.092932, 0.093554, 0.085784, 0.096395, 0.096304, 
757 0.090183, 0.089255, 0.090265, 0.086262, 0.087044, 0.088965, 
758 0.085825, 0.095073, 0.085933, 0.091005, 0.091707, 0.092428, 
759 0.091689, 0.091224, 0.095256, 0.083407, 0.087983, 0.090320, 
760 0.081580, 0.088077, 0.083478, 0.091309, 0.083734, 0.089906, 
761 0.100155, 0.092728, 0.086542, 0.078091, 0.085261, 0.094302, 
762 0.078063, 0.090070, 0.086566, 0.095020, 0.082124, 0.084791, 
763 0.090624, 0.090236, 0.086344, 0.085706, 0.085913, 0.083107, 
764 0.092557, 0.081144, 0.091254, 0.096139, 0.079458, 0.088124, 
765 0.088777, 0.076652, 0.085168, 0.082326, 0.080435, 0.085022, 
766 0.085693, 0.093957, 0.088134, 0.082347, 0.082139, 0.090980, 
767 0.078397, 0.093595, 0.091562, 0.081789, 0.085026, 0.080868, 
768 0.083455, 0.084590, 0.084124, 0.081486, 0.087242, 0.080928, 
769 0.096392, 0.078324, 0.092093, 0.074267, 0.082925, 0.090717, 
770 0.081467, 0.080435, 0.078825, 0.075843, 0.088940, 0.081451, 
771 0.096047, 0.088102, 0.091710, 0.095208, 0.086160, 0.091305, 
772 0.085406, 0.094432, 0.078227, 0.099870, 0.094140, 0.080130, 
773 0.090707, 0.083268, 0.082222, 0.088767, 0.084477, 0.088069, 
774 0.089382, 0.086164, 0.089123, 0.092799, 0.076710, 0.090727, 
775 0.077097, 0.099905, 0.089733, 0.088101, 0.093705, 0.089215, 
776 0.085110, 0.086032, 0.083719, 0.079693, 0.088116, 0.090519, 
777 0.091150, 0.090855, 0.090547, 0.077773, 0.081914, 0.080864, 
778 0.082935, 0.092952, 0.079390, 0.080255, 0.091123, 0.091331, 
779 0.095160, 0.089343, 0.083353, 0.087445, 0.094036, 0.084719, 
780 0.099665, 0.085104, 0.100912, 0.085958, 0.083972, 0.098284, 
781 0.078318, 0.082042, 0.088007, 0.085469, 0.089984, 0.081181, 
782 0.098850, 0.086409, 0.089070, 0.081579, 0.089622, 0.089396, 
783 0.093922, 0.089472, 0.090806, 0.075034, 0.090346, 0.083871, 
784 0.086931, 0.089207, 0.094425, 0.087830, 0.079537, 0.097316, 
785 0.096513, 0.092264, 0.082211, 0.083841, 0.081861, 0.092591, 
786 0.077785, 0.079646, 0.093721, 0.090735, 0.086910, 0.075837, 
787 0.090729, 0.092800, 0.098704, 0.092441, 0.086404, 0.089344, 
788 0.083650, 0.082569, 0.085753, 0.091430, 0.085460, 0.095210, 
789 0.083226, 0.094882, 0.084856, 0.093350, 0.084579, 0.096744, 
790 0.099211, 0.085142, 0.085499, 0.083395, 0.088352, 0.110418, 
791 0.093788, 0.096140, 0.082758, 0.097145, 0.089170, 0.090720, 
792 0.084708, 0.095927, 0.090330, 0.074239, 0.089532, 0.090514, 
793 0.089823, 0.089709, 0.101840, 0.082676, 0.087157, 0.079221, 
794 0.096460, 0.108192, 0.088904, 0.084510, 0.096624, 0.099242, 
795 0.094470, 0.092473, 0.091745, 0.090439, 0.095316, 0.087963, 
796 0.096400, 0.089479, 0.094880, 0.085964, 0.092775, 0.083200, 
797 0.095133, 0.090079, 0.088828, 0.087600, 0.094123, 0.089135, 
798 0.082617, 0.085109, 0.114091, 0.096331, 0.108465, 0.080318, 
799 0.106576, 0.089671, 0.092023, 0.090722, 0.086603, 0.091788, 
800 0.098375, 0.082712, 0.102681, 0.098869, 0.089051, 0.109972, 
801 0.080440, 0.097860, 0.093074, 0.097028, 0.107826, 0.117152, 
802 0.090968, 0.096790, 0.096725, 0.094641, 0.089535, 0.092561, 
803 0.095828, 0.084320, 0.089942, 0.105476, 0.087495, 0.089805, 
804 0.092238, 0.094141, 0.104390, 0.082958, 0.097449, 0.099594, 
805 0.092640, 0.097332, 0.093223, 0.100183, 0.092511, 0.087035, 
806 0.088741, 0.097856, 0.116682, 0.091732, 0.097753, 0.094283, 
807 0.094235, 0.082016, 0.098370, 0.085676, 0.104529, 0.087319, 
808 0.090289, 0.105314, 0.103634, 0.101261, 0.092764, 0.098217, 
809 0.098939, 0.096071, 0.096071, 0.094027, 0.092713, 0.089542, 
810 0.112293, 0.112293, 0.089531, 0.087752};
811 wDD = 0.188264;
812 wND = 0.102252;
813 wSD = -1;
814
815     Mmin = bin[0];
816     Mmax = bin[nbin];
817     if(M<Mmin || M>Mmax) return kTRUE;
818
819     Int_t ibin=nbin-1;
820     for(Int_t i=1; i<=nbin; i++) 
821       if(M<=bin[i]) {
822         ibin=i-1;
823         //      printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
824         break;
825       }
826     wSD=w[ibin];
827     return kTRUE;
828
829   }
830   else if(TMath::Abs(fEnergyCMS-2760)<1 ){
831    
832 const Int_t nbin=400;
833 Double_t bin[]={
834 1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500, 
835 4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300, 
836 7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100, 
837 10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900, 
838 13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700, 
839 15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500, 
840 18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300, 
841 21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100, 
842 24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900, 
843 27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700, 
844 30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500, 
845 33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300, 
846 36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100, 
847 39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900, 
848 42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700, 
849 45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500, 
850 48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300, 
851 51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100, 
852 54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900, 
853 57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700, 
854 60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500, 
855 63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300, 
856 66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100, 
857 69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900, 
858 72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700, 
859 75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500, 
860 78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300, 
861 81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100, 
862 84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900, 
863 87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700, 
864 90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500, 
865 93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300, 
866 96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100, 
867 99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900, 
868 102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700, 
869 105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500, 
870 108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300, 
871 111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100, 
872 114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900, 
873 117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700, 
874 120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500, 
875 123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300, 
876 126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100, 
877 129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900, 
878 132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700, 
879 135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500, 
880 138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300, 
881 141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100, 
882 144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900, 
883 147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700, 
884 150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500, 
885 153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300, 
886 156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100, 
887 159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900, 
888 162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700, 
889 165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500, 
890 168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300, 
891 171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100, 
892 174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900, 
893 177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700, 
894 180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500, 
895 183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300, 
896 186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100, 
897 189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900, 
898 192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700, 
899 195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500, 
900 198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
901 Double_t w[]={
902 1.000000, 0.402402, 0.347976, 0.386866, 0.304413, 0.275746, 
903 0.256941, 0.250439, 0.228486, 0.219225, 0.203368, 0.196124, 
904 0.180551, 0.169230, 0.159021, 0.157136, 0.154743, 0.160522, 
905 0.153993, 0.143448, 0.148062, 0.136337, 0.130853, 0.127798, 
906 0.137576, 0.137530, 0.124175, 0.120225, 0.120774, 0.123584, 
907 0.121883, 0.114522, 0.118338, 0.119587, 0.106017, 0.125802, 
908 0.106256, 0.101585, 0.097737, 0.100817, 0.102279, 0.110935, 
909 0.101429, 0.107629, 0.105802, 0.095688, 0.096617, 0.100985, 
910 0.101521, 0.100450, 0.111836, 0.088828, 0.102264, 0.101012, 
911 0.097673, 0.097634, 0.091720, 0.096167, 0.084537, 0.104443, 
912 0.091966, 0.097204, 0.089456, 0.088273, 0.098220, 0.095151, 
913 0.088201, 0.085570, 0.088431, 0.077625, 0.088314, 0.084582, 
914 0.091545, 0.083774, 0.086183, 0.089195, 0.086255, 0.077167, 
915 0.096118, 0.089881, 0.086206, 0.086968, 0.079827, 0.082002, 
916 0.083081, 0.076587, 0.081820, 0.092382, 0.082964, 0.080901, 
917 0.093512, 0.082907, 0.086691, 0.093639, 0.089010, 0.082857, 
918 0.090795, 0.082403, 0.078602, 0.087284, 0.079638, 0.082905, 
919 0.077189, 0.084329, 0.075900, 0.082559, 0.084210, 0.070053, 
920 0.068453, 0.083369, 0.077659, 0.073286, 0.075396, 0.073946, 
921 0.083293, 0.076235, 0.082184, 0.080104, 0.073755, 0.077369, 
922 0.068281, 0.084593, 0.074923, 0.069467, 0.072094, 0.077973, 
923 0.067034, 0.080314, 0.087441, 0.071728, 0.072302, 0.076783, 
924 0.079931, 0.075557, 0.076318, 0.079029, 0.075126, 0.076859, 
925 0.080253, 0.074344, 0.083387, 0.087553, 0.084437, 0.076322, 
926 0.077748, 0.087559, 0.075649, 0.076615, 0.077098, 0.074559, 
927 0.075540, 0.085883, 0.079269, 0.079866, 0.068922, 0.069770, 
928 0.068024, 0.077783, 0.086620, 0.086769, 0.068433, 0.078059, 
929 0.084463, 0.072790, 0.073889, 0.079090, 0.081759, 0.069576, 
930 0.069160, 0.071695, 0.078569, 0.075727, 0.088055, 0.082395, 
931 0.079915, 0.075150, 0.073580, 0.069968, 0.071141, 0.065823, 
932 0.077270, 0.076229, 0.071735, 0.079271, 0.078209, 0.069503, 
933 0.064732, 0.076312, 0.088579, 0.087271, 0.080566, 0.073527, 
934 0.071376, 0.068785, 0.071812, 0.072680, 0.067252, 0.059543, 
935 0.072818, 0.071856, 0.083427, 0.080664, 0.077315, 0.066060, 
936 0.078772, 0.065442, 0.067255, 0.077676, 0.068306, 0.071578, 
937 0.059728, 0.073526, 0.078932, 0.070316, 0.067620, 0.067323, 
938 0.078316, 0.080366, 0.091194, 0.066739, 0.076238, 0.070382, 
939 0.077118, 0.073822, 0.072830, 0.062947, 0.077375, 0.076284, 
940 0.070951, 0.086127, 0.071074, 0.076621, 0.070502, 0.070897, 
941 0.058764, 0.065322, 0.073620, 0.062051, 0.074548, 0.083770, 
942 0.072502, 0.066823, 0.074192, 0.081570, 0.067340, 0.081896, 
943 0.080680, 0.072835, 0.069675, 0.078881, 0.072826, 0.069616, 
944 0.082744, 0.069138, 0.073333, 0.080881, 0.069091, 0.064266, 
945 0.062849, 0.072846, 0.067462, 0.067229, 0.071319, 0.071099, 
946 0.069381, 0.073799, 0.076106, 0.075006, 0.073074, 0.092589, 
947 0.074277, 0.061324, 0.069788, 0.070310, 0.063160, 0.073077, 
948 0.075447, 0.081013, 0.074102, 0.076565, 0.060192, 0.058326, 
949 0.071508, 0.072974, 0.065098, 0.060432, 0.062077, 0.075644, 
950 0.075417, 0.066947, 0.066744, 0.065111, 0.075468, 0.078185, 
951 0.073216, 0.066502, 0.079582, 0.065405, 0.069828, 0.072165, 
952 0.071112, 0.064656, 0.080396, 0.066505, 0.063419, 0.066128, 
953 0.080616, 0.071463, 0.064867, 0.074782, 0.063103, 0.068179, 
954 0.064911, 0.073029, 0.075746, 0.062264, 0.099126, 0.067890, 
955 0.074940, 0.070090, 0.073583, 0.056904, 0.063745, 0.063780, 
956 0.076876, 0.066519, 0.067164, 0.068668, 0.075065, 0.070983, 
957 0.075751, 0.066317, 0.077520, 0.073139, 0.073961, 0.085492, 
958 0.074629, 0.059555, 0.081026, 0.059274, 0.055448, 0.084269, 
959 0.066222, 0.078874, 0.062021, 0.075156, 0.090478, 0.066265, 
960 0.067845, 0.076653, 0.086671, 0.082362, 0.067246, 0.075975, 
961 0.072594, 0.068570, 0.095034, 0.065644, 0.070945, 0.066190, 
962 0.075906, 0.055154, 0.075575, 0.058078, 0.071004, 0.070850, 
963 0.064374, 0.058251, 0.069430, 0.072293, 0.065484, 0.084197, 
964 0.090119, 0.091619, 0.067620, 0.079462, 0.063025, 0.068128, 
965 0.056927, 0.076351, 0.073869, 0.061597, 0.083741, 0.063762, 
966 0.064489, 0.074269, 0.068832, 0.058648, 0.069536, 0.074824, 
967 0.081009, 0.073389, 0.076792, 0.084855, 0.075280, 0.061473, 
968 0.063840, 0.062891, 0.071328, 0.065250};
969 wDD = 0.077845;
970 wND = 0.066355;
971 wSD = -1;
972
973     Mmin = bin[0];
974     Mmax = bin[nbin];
975     if(M<Mmin || M>Mmax) return kTRUE;
976
977     Int_t ibin=nbin-1;
978     for(Int_t i=1; i<=nbin; i++) 
979       if(M<=bin[i]) {
980         ibin=i-1;
981         //      printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
982         break;
983       }
984     wSD=w[ibin];
985     return kTRUE;
986    
987   }
988   else if(TMath::Abs(fEnergyCMS-7000)<1 ){
989     
990 const Int_t nbin=400;
991 Double_t bin[]={
992 1.080000, 1.577300, 2.074600, 2.571900, 3.069200, 3.566500, 
993 4.063800, 4.561100, 5.058400, 5.555700, 6.053000, 6.550300, 
994 7.047600, 7.544900, 8.042200, 8.539500, 9.036800, 9.534100, 
995 10.031400, 10.528700, 11.026000, 11.523300, 12.020600, 12.517900, 
996 13.015200, 13.512500, 14.009800, 14.507100, 15.004400, 15.501700, 
997 15.999000, 16.496300, 16.993600, 17.490900, 17.988200, 18.485500, 
998 18.982800, 19.480100, 19.977400, 20.474700, 20.972000, 21.469300, 
999 21.966600, 22.463900, 22.961200, 23.458500, 23.955800, 24.453100, 
1000 24.950400, 25.447700, 25.945000, 26.442300, 26.939600, 27.436900, 
1001 27.934200, 28.431500, 28.928800, 29.426100, 29.923400, 30.420700, 
1002 30.918000, 31.415300, 31.912600, 32.409900, 32.907200, 33.404500, 
1003 33.901800, 34.399100, 34.896400, 35.393700, 35.891000, 36.388300, 
1004 36.885600, 37.382900, 37.880200, 38.377500, 38.874800, 39.372100, 
1005 39.869400, 40.366700, 40.864000, 41.361300, 41.858600, 42.355900, 
1006 42.853200, 43.350500, 43.847800, 44.345100, 44.842400, 45.339700, 
1007 45.837000, 46.334300, 46.831600, 47.328900, 47.826200, 48.323500, 
1008 48.820800, 49.318100, 49.815400, 50.312700, 50.810000, 51.307300, 
1009 51.804600, 52.301900, 52.799200, 53.296500, 53.793800, 54.291100, 
1010 54.788400, 55.285700, 55.783000, 56.280300, 56.777600, 57.274900, 
1011 57.772200, 58.269500, 58.766800, 59.264100, 59.761400, 60.258700, 
1012 60.756000, 61.253300, 61.750600, 62.247900, 62.745200, 63.242500, 
1013 63.739800, 64.237100, 64.734400, 65.231700, 65.729000, 66.226300, 
1014 66.723600, 67.220900, 67.718200, 68.215500, 68.712800, 69.210100, 
1015 69.707400, 70.204700, 70.702000, 71.199300, 71.696600, 72.193900, 
1016 72.691200, 73.188500, 73.685800, 74.183100, 74.680400, 75.177700, 
1017 75.675000, 76.172300, 76.669600, 77.166900, 77.664200, 78.161500, 
1018 78.658800, 79.156100, 79.653400, 80.150700, 80.648000, 81.145300, 
1019 81.642600, 82.139900, 82.637200, 83.134500, 83.631800, 84.129100, 
1020 84.626400, 85.123700, 85.621000, 86.118300, 86.615600, 87.112900, 
1021 87.610200, 88.107500, 88.604800, 89.102100, 89.599400, 90.096700, 
1022 90.594000, 91.091300, 91.588600, 92.085900, 92.583200, 93.080500, 
1023 93.577800, 94.075100, 94.572400, 95.069700, 95.567000, 96.064300, 
1024 96.561600, 97.058900, 97.556200, 98.053500, 98.550800, 99.048100, 
1025 99.545400, 100.042700, 100.540000, 101.037300, 101.534600, 102.031900, 
1026 102.529200, 103.026500, 103.523800, 104.021100, 104.518400, 105.015700, 
1027 105.513000, 106.010300, 106.507600, 107.004900, 107.502200, 107.999500, 
1028 108.496800, 108.994100, 109.491400, 109.988700, 110.486000, 110.983300, 
1029 111.480600, 111.977900, 112.475200, 112.972500, 113.469800, 113.967100, 
1030 114.464400, 114.961700, 115.459000, 115.956300, 116.453600, 116.950900, 
1031 117.448200, 117.945500, 118.442800, 118.940100, 119.437400, 119.934700, 
1032 120.432000, 120.929300, 121.426600, 121.923900, 122.421200, 122.918500, 
1033 123.415800, 123.913100, 124.410400, 124.907700, 125.405000, 125.902300, 
1034 126.399600, 126.896900, 127.394200, 127.891500, 128.388800, 128.886100, 
1035 129.383400, 129.880700, 130.378000, 130.875300, 131.372600, 131.869900, 
1036 132.367200, 132.864500, 133.361800, 133.859100, 134.356400, 134.853700, 
1037 135.351000, 135.848300, 136.345600, 136.842900, 137.340200, 137.837500, 
1038 138.334800, 138.832100, 139.329400, 139.826700, 140.324000, 140.821300, 
1039 141.318600, 141.815900, 142.313200, 142.810500, 143.307800, 143.805100, 
1040 144.302400, 144.799700, 145.297000, 145.794300, 146.291600, 146.788900, 
1041 147.286200, 147.783500, 148.280800, 148.778100, 149.275400, 149.772700, 
1042 150.270000, 150.767300, 151.264600, 151.761900, 152.259200, 152.756500, 
1043 153.253800, 153.751100, 154.248400, 154.745700, 155.243000, 155.740300, 
1044 156.237600, 156.734900, 157.232200, 157.729500, 158.226800, 158.724100, 
1045 159.221400, 159.718700, 160.216000, 160.713300, 161.210600, 161.707900, 
1046 162.205200, 162.702500, 163.199800, 163.697100, 164.194400, 164.691700, 
1047 165.189000, 165.686300, 166.183600, 166.680900, 167.178200, 167.675500, 
1048 168.172800, 168.670100, 169.167400, 169.664700, 170.162000, 170.659300, 
1049 171.156600, 171.653900, 172.151200, 172.648500, 173.145800, 173.643100, 
1050 174.140400, 174.637700, 175.135000, 175.632300, 176.129600, 176.626900, 
1051 177.124200, 177.621500, 178.118800, 178.616100, 179.113400, 179.610700, 
1052 180.108000, 180.605300, 181.102600, 181.599900, 182.097200, 182.594500, 
1053 183.091800, 183.589100, 184.086400, 184.583700, 185.081000, 185.578300, 
1054 186.075600, 186.572900, 187.070200, 187.567500, 188.064800, 188.562100, 
1055 189.059400, 189.556700, 190.054000, 190.551300, 191.048600, 191.545900, 
1056 192.043200, 192.540500, 193.037800, 193.535100, 194.032400, 194.529700, 
1057 195.027000, 195.524300, 196.021600, 196.518900, 197.016200, 197.513500, 
1058 198.010800, 198.508100, 199.005400, 199.502700, 200.000000};
1059 Double_t w[]={
1060 1.000000, 0.526293, 0.446686, 0.437789, 0.366854, 0.333320, 
1061 0.291931, 0.266464, 0.253870, 0.248706, 0.232788, 0.220736, 
1062 0.209886, 0.202741, 0.188617, 0.182767, 0.178748, 0.169039, 
1063 0.175911, 0.169098, 0.171256, 0.146728, 0.144543, 0.159470, 
1064 0.153171, 0.151883, 0.144693, 0.136307, 0.140226, 0.135388, 
1065 0.141317, 0.151121, 0.131209, 0.144039, 0.124688, 0.128020, 
1066 0.119122, 0.121868, 0.122332, 0.119561, 0.115744, 0.102504, 
1067 0.114726, 0.109518, 0.115418, 0.114860, 0.110026, 0.107693, 
1068 0.103005, 0.115985, 0.108629, 0.105937, 0.101056, 0.101228, 
1069 0.113305, 0.110302, 0.104696, 0.107447, 0.099095, 0.107378, 
1070 0.103090, 0.111384, 0.090821, 0.109806, 0.093639, 0.096655, 
1071 0.110416, 0.104446, 0.098530, 0.095105, 0.106641, 0.101804, 
1072 0.091798, 0.094775, 0.104130, 0.088436, 0.119692, 0.099160, 
1073 0.086163, 0.089250, 0.101898, 0.091786, 0.087346, 0.095312, 
1074 0.107186, 0.085671, 0.093283, 0.091992, 0.114654, 0.086172, 
1075 0.084559, 0.097862, 0.079417, 0.094737, 0.089678, 0.105265, 
1076 0.099092, 0.087901, 0.086828, 0.084756, 0.077769, 0.084254, 
1077 0.083262, 0.092935, 0.088858, 0.093377, 0.083569, 0.084771, 
1078 0.084957, 0.084033, 0.095007, 0.076690, 0.087726, 0.097913, 
1079 0.084119, 0.076361, 0.084172, 0.091068, 0.094564, 0.091406, 
1080 0.088405, 0.090355, 0.085388, 0.084586, 0.085752, 0.084298, 
1081 0.091294, 0.081491, 0.075024, 0.082543, 0.088048, 0.074621, 
1082 0.078514, 0.077249, 0.078378, 0.092945, 0.075859, 0.077602, 
1083 0.074592, 0.078181, 0.081527, 0.080865, 0.078854, 0.078237, 
1084 0.085506, 0.089823, 0.072738, 0.078430, 0.077162, 0.081495, 
1085 0.090878, 0.099417, 0.100966, 0.087960, 0.085556, 0.081661, 
1086 0.078066, 0.089059, 0.073564, 0.092704, 0.073148, 0.098057, 
1087 0.067906, 0.079452, 0.090567, 0.082454, 0.077851, 0.079694, 
1088 0.091272, 0.078628, 0.096906, 0.098779, 0.088906, 0.070174, 
1089 0.083822, 0.084241, 0.093237, 0.071062, 0.075771, 0.096405, 
1090 0.098441, 0.086007, 0.069599, 0.078400, 0.083481, 0.081054, 
1091 0.085552, 0.069582, 0.071336, 0.073207, 0.087913, 0.080125, 
1092 0.075189, 0.067217, 0.073509, 0.099694, 0.080781, 0.073943, 
1093 0.062822, 0.076611, 0.087672, 0.077632, 0.063959, 0.077754, 
1094 0.084651, 0.097348, 0.063909, 0.055053, 0.087616, 0.074428, 
1095 0.101165, 0.078446, 0.070683, 0.071162, 0.091516, 0.069641, 
1096 0.070969, 0.069778, 0.083318, 0.066703, 0.074027, 0.067589, 
1097 0.070620, 0.081307, 0.094406, 0.076188, 0.061663, 0.077561, 
1098 0.076159, 0.071851, 0.074417, 0.076136, 0.069073, 0.075450, 
1099 0.070218, 0.089709, 0.079974, 0.082077, 0.076979, 0.070497, 
1100 0.076296, 0.087347, 0.073508, 0.088073, 0.067186, 0.059898, 
1101 0.085495, 0.100152, 0.079468, 0.093783, 0.082680, 0.077272, 
1102 0.081995, 0.068240, 0.071881, 0.073737, 0.072346, 0.079034, 
1103 0.078721, 0.067518, 0.068196, 0.081738, 0.082814, 0.082480, 
1104 0.069072, 0.066853, 0.081523, 0.073588, 0.082308, 0.091641, 
1105 0.072747, 0.084317, 0.072190, 0.079372, 0.067424, 0.077450, 
1106 0.062343, 0.090708, 0.065470, 0.086588, 0.071172, 0.066705, 
1107 0.070670, 0.070407, 0.096111, 0.066738, 0.081249, 0.072882, 
1108 0.075144, 0.060331, 0.074589, 0.076968, 0.085913, 0.072561, 
1109 0.064645, 0.078742, 0.075670, 0.065984, 0.080932, 0.069898, 
1110 0.065303, 0.096856, 0.057690, 0.065720, 0.066545, 0.068521, 
1111 0.068278, 0.069245, 0.086643, 0.063401, 0.070933, 0.070752, 
1112 0.066978, 0.058891, 0.070073, 0.078031, 0.082691, 0.101414, 
1113 0.075814, 0.072790, 0.057622, 0.093002, 0.084660, 0.079216, 
1114 0.070371, 0.070141, 0.076944, 0.067285, 0.078016, 0.077807, 
1115 0.066668, 0.066459, 0.059962, 0.062774, 0.083450, 0.064554, 
1116 0.067887, 0.064165, 0.072782, 0.067285, 0.052710, 0.096824, 
1117 0.071931, 0.064190, 0.074442, 0.082647, 0.055797, 0.078632, 
1118 0.061116, 0.063092, 0.049131, 0.074517, 0.069915, 0.079021, 
1119 0.088656, 0.101045, 0.090432, 0.076460, 0.067451, 0.071381, 
1120 0.069790, 0.077330, 0.077115, 0.084403, 0.065138, 0.056436, 
1121 0.088024, 0.069893, 0.055985, 0.089655, 0.062911, 0.075311, 
1122 0.086679, 0.093645, 0.068632, 0.064498, 0.057677, 0.081391, 
1123 0.062781, 0.075467, 0.061314, 0.073394, 0.084462, 0.068470, 
1124 0.071267, 0.060556, 0.072487, 0.063785, 0.079164, 0.070406, 
1125 0.073394, 0.063168, 0.066968, 0.064125, 0.063954, 0.072504, 
1126 0.058948, 0.057740, 0.083383, 0.067262};
1127 wDD = 0.098024;
1128 wND = 0.053452;
1129 wSD = -1;
1130
1131     Mmin = bin[0];
1132     Mmax = bin[nbin];
1133     if(M<Mmin || M>Mmax) return kTRUE;
1134
1135     Int_t ibin=nbin-1;
1136     for(Int_t i=1; i<=nbin; i++) 
1137       if(M<=bin[i]) {
1138         ibin=i-1;
1139         //      printf("Mi> %f && Mi< %f\n", bin[i-1], bin[i]);
1140         break;
1141       }
1142     wSD=w[ibin];
1143     return kTRUE;
1144    
1145   }
1146
1147   return kFALSE;
1148 }
1149
1150
1151 //______________________________________________________________________________