ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


// Library class for particle pt and y distributions used for 
// LambdaC simulations.
// To be used with AliGenParam.
//
// Author: Annalisa Mastroserio <Annalisa.Mastroserio@cern.ch>
//

#include <TPDGCode.h>
#include <TMath.h>
#include <TRandom.h>
#include <TString.h>

#include "AliGenLcLib.h"
#include "AliLog.h"

ClassImp(AliGenLcLib)


//---------------------------------------------
//        LambdaC 
//---------------------------------------------
  Int_t AliGenLcLib::IpLcPlus(TRandom *)
{
  //PDG code
  return 4122;
}

Int_t AliGenLcLib::IpLcMinus(TRandom *)
{
  //PDG code
  return -4122;
}

Double_t AliGenLcLib::PtLcFlat( const Double_t *, const Double_t *)
{
  // FLAT pt-distribution
  return 1; 
}

Double_t AliGenLcLib::PtLcExp( const Double_t *x, const Double_t *)
{
  //     pt-distribution
  //return x[0]*TMath::Exp(-x[0]/0.16); // distribution used in LHC11f1 for the anchor runs : 139441, 139510, 139511, 130513, 130514, 130517. 
  return TMath::GammaDist(x[0],2,0,1.7); //distribution as in LHC11a10a of the prompt Lc whose daughters are in |eta|<0.9. Used for Lb as well.
}

Double_t AliGenLcLib::YLcFlat(const Double_t *,const Double_t *)
{
  //LambdaC             y-distribution 
  return 1;
}



typedef Double_t (*GenFunc)   (const Double_t*,  const Double_t*);
typedef Int_t    (*GenFuncIp) (TRandom *);

GenFunc AliGenLcLib::GetPt(Int_t iPID, const char * sForm) const
{
  // Return pointer to Pt parameterisation
  printf("PID: %i, form: %s \n",iPID,sForm);	
  TString type(sForm);
  GenFunc func;

  switch(iPID) {

  case kLcPlus:  
    if     (type=="FLAT")                                         {func=PtLcFlat; break;}
    else if(type=="EXP")                                          {func=PtLcExp; break;}
    else {
      AliFatal(Form("Unknown Pt distribution form: %s",sForm));   func=0;
    }

  case kLcMinus:  
    if     (type=="FLAT")                                         {func=PtLcFlat; break;}
    else if(type=="EXP")                                          {func=PtLcExp; break;}
    else {
      AliFatal(Form("Unknown Pt distribution form: %s",sForm));   func=0;
    }

  default : AliFatal(Form("Unknown particle type: %i",iPID));      func=0;
  }//switch

  return func;
}

GenFunc AliGenLcLib::GetY(Int_t iPID, const char *sForm) const
{
  AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));	
  GenFunc func;
  switch (iPID) {

  case kLcPlus:                                                func=YLcFlat; break;
  case kLcMinus:                                               func=YLcFlat; break;

  default  : AliFatal(Form("Unknown particle type: %i",iPID));     func=0; break;

  }//switch
  return func;
}

GenFuncIp AliGenLcLib::GetIp(Int_t iPID, const char *sForm) const
{
  // Return pointer to particle type parameterisation
  AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));   //////////	

  switch (iPID){

  case kLcPlus:                                                  return IpLcPlus;
  case kLcMinus:                                                 return IpLcMinus;

  default  : AliFatal(Form("Unknown particle type: %i",iPID));  return 0;
  }
}
 AliGenLcLib.cxx:1
 AliGenLcLib.cxx:2
 AliGenLcLib.cxx:3
 AliGenLcLib.cxx:4
 AliGenLcLib.cxx:5
 AliGenLcLib.cxx:6
 AliGenLcLib.cxx:7
 AliGenLcLib.cxx:8
 AliGenLcLib.cxx:9
 AliGenLcLib.cxx:10
 AliGenLcLib.cxx:11
 AliGenLcLib.cxx:12
 AliGenLcLib.cxx:13
 AliGenLcLib.cxx:14
 AliGenLcLib.cxx:15
 AliGenLcLib.cxx:16
 AliGenLcLib.cxx:17
 AliGenLcLib.cxx:18
 AliGenLcLib.cxx:19
 AliGenLcLib.cxx:20
 AliGenLcLib.cxx:21
 AliGenLcLib.cxx:22
 AliGenLcLib.cxx:23
 AliGenLcLib.cxx:24
 AliGenLcLib.cxx:25
 AliGenLcLib.cxx:26
 AliGenLcLib.cxx:27
 AliGenLcLib.cxx:28
 AliGenLcLib.cxx:29
 AliGenLcLib.cxx:30
 AliGenLcLib.cxx:31
 AliGenLcLib.cxx:32
 AliGenLcLib.cxx:33
 AliGenLcLib.cxx:34
 AliGenLcLib.cxx:35
 AliGenLcLib.cxx:36
 AliGenLcLib.cxx:37
 AliGenLcLib.cxx:38
 AliGenLcLib.cxx:39
 AliGenLcLib.cxx:40
 AliGenLcLib.cxx:41
 AliGenLcLib.cxx:42
 AliGenLcLib.cxx:43
 AliGenLcLib.cxx:44
 AliGenLcLib.cxx:45
 AliGenLcLib.cxx:46
 AliGenLcLib.cxx:47
 AliGenLcLib.cxx:48
 AliGenLcLib.cxx:49
 AliGenLcLib.cxx:50
 AliGenLcLib.cxx:51
 AliGenLcLib.cxx:52
 AliGenLcLib.cxx:53
 AliGenLcLib.cxx:54
 AliGenLcLib.cxx:55
 AliGenLcLib.cxx:56
 AliGenLcLib.cxx:57
 AliGenLcLib.cxx:58
 AliGenLcLib.cxx:59
 AliGenLcLib.cxx:60
 AliGenLcLib.cxx:61
 AliGenLcLib.cxx:62
 AliGenLcLib.cxx:63
 AliGenLcLib.cxx:64
 AliGenLcLib.cxx:65
 AliGenLcLib.cxx:66
 AliGenLcLib.cxx:67
 AliGenLcLib.cxx:68
 AliGenLcLib.cxx:69
 AliGenLcLib.cxx:70
 AliGenLcLib.cxx:71
 AliGenLcLib.cxx:72
 AliGenLcLib.cxx:73
 AliGenLcLib.cxx:74
 AliGenLcLib.cxx:75
 AliGenLcLib.cxx:76
 AliGenLcLib.cxx:77
 AliGenLcLib.cxx:78
 AliGenLcLib.cxx:79
 AliGenLcLib.cxx:80
 AliGenLcLib.cxx:81
 AliGenLcLib.cxx:82
 AliGenLcLib.cxx:83
 AliGenLcLib.cxx:84
 AliGenLcLib.cxx:85
 AliGenLcLib.cxx:86
 AliGenLcLib.cxx:87
 AliGenLcLib.cxx:88
 AliGenLcLib.cxx:89
 AliGenLcLib.cxx:90
 AliGenLcLib.cxx:91
 AliGenLcLib.cxx:92
 AliGenLcLib.cxx:93
 AliGenLcLib.cxx:94
 AliGenLcLib.cxx:95
 AliGenLcLib.cxx:96
 AliGenLcLib.cxx:97
 AliGenLcLib.cxx:98
 AliGenLcLib.cxx:99
 AliGenLcLib.cxx:100
 AliGenLcLib.cxx:101
 AliGenLcLib.cxx:102
 AliGenLcLib.cxx:103
 AliGenLcLib.cxx:104
 AliGenLcLib.cxx:105
 AliGenLcLib.cxx:106
 AliGenLcLib.cxx:107
 AliGenLcLib.cxx:108
 AliGenLcLib.cxx:109
 AliGenLcLib.cxx:110
 AliGenLcLib.cxx:111
 AliGenLcLib.cxx:112
 AliGenLcLib.cxx:113
 AliGenLcLib.cxx:114
 AliGenLcLib.cxx:115
 AliGenLcLib.cxx:116
 AliGenLcLib.cxx:117
 AliGenLcLib.cxx:118
 AliGenLcLib.cxx:119
 AliGenLcLib.cxx:120
 AliGenLcLib.cxx:121
 AliGenLcLib.cxx:122
 AliGenLcLib.cxx:123
 AliGenLcLib.cxx:124
 AliGenLcLib.cxx:125
 AliGenLcLib.cxx:126
 AliGenLcLib.cxx:127
 AliGenLcLib.cxx:128
 AliGenLcLib.cxx:129
 AliGenLcLib.cxx:130