]> git.uio.no Git - u/mrichter/AliRoot.git/blob - JETAN/AliJetParticlesReaderKine.h
Allocation of big array in the heap
[u/mrichter/AliRoot.git] / JETAN / AliJetParticlesReaderKine.h
1 #ifndef ALIJETPARTICLESREADERKINE_H
2 #define ALIJETPARTICLESREADERKINE_H
3
4 /* $Id$ */
5
6 //_______________________________________________________________________
7 /////////////////////////////////////////////////////////////////////////
8 //
9 // class AliJetParticlesReaderKine
10 //
11 // Reader for Kinematics
12 //
13 // loizides@ikf.uni-frankfurt.de
14 //
15 /////////////////////////////////////////////////////////////////////////
16
17 #include <Riostream.h>
18 #include <TString.h>
19 #include <TParticle.h>
20 #include "AliJetParticlesReader.h"
21 class AliRunLoader;
22
23 class AliJetParticlesReaderKine: public AliJetParticlesReader
24 {
25   public:
26   AliJetParticlesReaderKine();
27   AliJetParticlesReaderKine(TString&);
28   AliJetParticlesReaderKine(TObjArray*, const Char_t *filename="galice.root");
29   virtual ~AliJetParticlesReaderKine();
30
31   void Rewind();
32   void SetNeutral(Bool_t b){fNeutral=b;}
33   void SetCharged(Bool_t b){fCharged=b;}
34   void SetEM(Bool_t b){fEM=b;}
35   void SetUseTracks(Bool_t b){fUseTracks=b;}
36
37   protected:
38   Int_t  ReadNext();
39   Int_t  OpenFile(Int_t n);
40   Bool_t IsAcceptedParticle(TParticle *p) const;
41    
42   TString       fFileName;  //file name of galice 
43   AliRunLoader* fRunLoader; //!pointer to loader
44
45   Bool_t  fNeutral; //neutral cut
46   Bool_t  fCharged; //charged cut
47   Bool_t  fEM;      //em (e+,e-,gamma) cut
48   Bool_t  fUseTracks; // use ntracks instead of nprimaries
49   ClassDef(AliJetParticlesReaderKine,1)
50 };
51
52 inline Bool_t AliJetParticlesReaderKine::IsAcceptedParticle(TParticle *p) const
53 {
54   Int_t pcode=TMath::Abs(p->GetPdgCode());  
55   
56   if ((pcode==11)||(pcode==22)) {
57     if(!fEM) return kFALSE;
58   }  else {
59 #if 1
60     if(pcode!=211  && pcode!=321 && pcode!=2212 && 
61        pcode!=111  && pcode!=311 && pcode!=2112 && 
62        pcode!=3122 && pcode!=213 && pcode!=113 &&
63        pcode!=130 &&pcode!=310) {
64       //p->Print();
65       return kFALSE;
66     }
67 #endif
68     TParticlePDG *pdg=p->GetPDG();
69     Int_t ch=(Int_t)pdg->Charge(); 
70     if((!fCharged)&&(ch)) return kFALSE;
71     if((!fNeutral)&&(!ch)) return kFALSE;
72   }
73
74   //p->Print();
75   Float_t eta=0.;//p->Eta();
76   Float_t pz=p->Pz();
77   //if(TMath::Abs(pz)>150.) return kFALSE;
78   Float_t pabs=p->P();
79   if(pabs-TMath::Abs(pz)>1.e-8) eta=0.5*TMath::Log((pabs+pz)/(pabs-pz));
80   else return kFALSE;
81
82   if((eta<fEtaMin)||(eta>fEtaMax)) return kFALSE;
83
84   Float_t phi=p->Phi();
85   if((phi<fPhiMin)||(phi>fPhiMax)) return kFALSE;
86
87   Float_t pt=p->Pt();
88   if((pt<fPtMin)||(pt>fPtMax)) return kFALSE;
89
90   return kTRUE;
91 }
92 #endif