#ifndef ALIGENCOSMICSPARAM_H
#define ALIGENCOSMICSPARAM_H
#include "AliLog.h"
#include "AliGenerator.h"
class AliGenCosmicsParam : public AliGenerator
{
public:
AliGenCosmicsParam();
virtual ~AliGenCosmicsParam() {}
virtual void Generate();
virtual void Init();
void SetParamMI() { fParamMI=kTRUE; fParamACORDE=kFALSE; fParamDataTPC=kFALSE; return; }
void SetParamACORDE() { fParamMI=kFALSE; fParamACORDE=kTRUE; fParamDataTPC=kFALSE; return; }
void SetParamDataTPC() { fParamMI=kFALSE; fParamACORDE=kFALSE; fParamDataTPC=kTRUE; return; }
void SetYOrigin(Float_t y=600.) { fYOrigin=y; return; }
void SetMaxAngleWRTVertical(Float_t max=45.) {
if(max<0. || max>90.) AliFatal("angle must be in [0,pi/2]");
fMaxAngleWRTVertical=max; return; }
void SetBkG(Float_t b) { fBkG=b; return; }
void SetInACORDE(Bool_t onlyACORDE4ITS=kFALSE)
{ fACORDE=kTRUE; fACORDE4ITS=onlyACORDE4ITS; return; }
void SetInBottomScintillator() { fBottomScintillator=kTRUE; return; }
void SetInTPC() { fTPC=kTRUE; return; }
void SetInITS() { fITS=kTRUE; return; }
void SetInSPDinner() { fSPDinner=kTRUE; return; }
void SetInSPDouter() { fSPDouter=kTRUE; return; }
void SetInSDDinner() { fSDDinner=kTRUE; return; }
void SetInSDDouter() { fSDDouter=kTRUE; return; }
void SetInSSDinner() { fSSDinner=kTRUE; return; }
void SetInSSDouter() { fSSDouter=kTRUE; return; }
private:
Bool_t IntersectCylinder(Float_t r,Float_t z,Int_t pdg,
Float_t o[3],Float_t p[3]) const;
Bool_t IntersectACORDE(Int_t pdg,
Float_t o[3],Float_t p[3]) const;
Bool_t IntersectBottomScintillator(Int_t pdg,
Float_t o[3],Float_t p[3]) const;
Bool_t fParamMI;
Bool_t fParamACORDE;
Bool_t fParamDataTPC;
Float_t fYOrigin;
Float_t fMaxAngleWRTVertical;
Float_t fBkG;
Bool_t fTPC;
Bool_t fITS;
Bool_t fSPDinner;
Bool_t fSPDouter;
Bool_t fSDDinner;
Bool_t fSDDouter;
Bool_t fSSDinner;
Bool_t fSSDouter;
Bool_t fACORDE;
Bool_t fACORDE4ITS;
Bool_t fBottomScintillator;
ClassDef(AliGenCosmicsParam,5)
};
#endif