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