1 // $Id: AliJFilter.h,v 1.5 2012/04/19 15:19:52 jkral Exp $
3 //______________________________________________________________________________
4 // Analysis task for high pt particle correlations
5 // author: R.Diaz, J. Rak, D.J. Kim
6 // ALICE Group University of Jyvaskyla
9 // Fill the analysis containers for ESD or AOD
10 // Note: Adapted for AliAnalysisTaskSE
11 //////////////////////////////////////////////////////////////////////////////
17 #include "AliJRunHeader.h"
18 #include "AliESDEvent.h"
19 #include "AliAODEvent.h"
20 #include "AliAnalysisTaskSE.h"
23 #include <AliJConst.h>
26 //==============================================================
28 #ifndef AliJMaxDimBuffer
29 #define AliJMaxDimBuffer
30 const int kMaxDimBuffer = 300;//max length of a line read to a buffe
33 class AliJEventHeader;
36 class AliAnalysisTaskSE;
52 class AliESDtrackCuts;
54 class AliESDCentrality;
59 class AliEMCALGeometry;
60 class AliEMCALGeoUtils;
61 class AliEMCALRecoUtils;
62 class AliPHOSGeoUtils;
65 class AliAnalysisFilter;
73 class AliAnalysisUtils;
77 class AliJFilter : public TNamed {
81 AliJFilter(const char *name, AliAnalysisTaskSE *task);
82 AliJFilter(const AliJFilter& ap);
83 AliJFilter& operator = (const AliJFilter& ap);
84 virtual ~AliJFilter();
86 // methods to fill from AliAnalysisTaskSE
87 virtual void UserCreateOutputObjects();
89 virtual void LocalInit() { Init(); }
90 virtual void UserExec(Option_t *option);
91 virtual void Terminate(Option_t * opt = "");
94 void SetTrackFilter( AliAnalysisFilter * filter ){ fESDFilter = filter; }
95 bool GetEventSuccess() const { return fEventSuccess; }
96 //are ESDs from real exp or MonteCarlo
97 // AliEMCALGeoUtils* GetEMCALGeoUtils (bool doDelete=kFALSE);
98 void SetClusterThreshold(double t) { fClusterThreshold = t; }
99 void SetTrackThreshold(double t) { fTrackThreshold = t; }
100 void SetMyTask( AliAnalysisTaskSE *t ) { fMyTask = t; }
101 TClonesArray *GetTrackList() const { return fTrackList; }
102 TClonesArray *GetPhotonList() const { return fPhotonList; }
103 TClonesArray *GetCaloCellList() const { return fCaloCellList; }
104 TClonesArray *GetMCTrackList() const { return fMCTrackList; }
105 TClonesArray *GetHeaderList() const { return fHeaderList; }
106 TList *GetRunInfoList() const { return fRunInfoList; }
108 AliESDVZERO *GetESDVZERO() const { return fVZEROData; }
109 AliESDTZERO *GetESDTZERO() const { return fTZEROData; }
110 // AliESDFMD* fFMDData;
111 AliESDZDC* GetESDZDC() const { return fZDCData; }
113 TClonesArray **GetTrackListP() { return &fTrackList; }
114 TClonesArray **GetPhotonListP() { return &fPhotonList; }
115 TClonesArray **GetCaloCellListP() { return &fCaloCellList; }
116 TClonesArray **GetMCTrackListP() { return &fMCTrackList; }
117 TClonesArray **GetHeaderListP() { return &fHeaderList; }
118 TList **GetRunInfoListP() { return &fRunInfoList; }
120 AliESDVZERO** GetESDVZEROP() { return &fVZEROData; }
121 AliESDTZERO** GetESDTZEROP() { return &fTZEROData; }
122 // AliESDFMD* fFMDData;
123 AliESDZDC** GetESDZDCP() { return &fZDCData; }
125 Bool_t GetStoreEventPlaneSource(){ return fAliJRunHeader->GetStoreEventPlaneSource(); }
126 Bool_t GetStoreEMCalInfo(){ return fAliJRunHeader->GetStoreEMCalInfo(); }
127 AliESDEvent * ESDEvent(){ return FromESD()? dynamic_cast<AliESDEvent*>(Event()):NULL;}
128 AliAODEvent * AODEvent(){ return FromAOD()? dynamic_cast<AliAODEvent*>(Event()):NULL;}
129 AliVEvent * Event(){ return fMyTask->InputEvent(); }
130 AliMCEvent * MCEvent(){ return IsMC()?fMyTask->MCEvent():NULL; }
132 Bool_t IsMC(){ return fAliJRunHeader->IsMC(); }
133 Bool_t FromESD(){ return fAliJRunHeader->FromESD(); }
134 Bool_t FromAOD(){ return fAliJRunHeader->FromAOD(); }
136 AliJRunHeader* GetAliJRunHeader() const { return fAliJRunHeader; }
137 void SetAliJRunHeader( AliJRunHeader* header ){ fAliJRunHeader=header; }
140 Int_t DebugLevel(){ return fMyTask->DebugLevel(); }
141 inline void DEBUG(int level, int type, TString msg1, TString msg2=""){
142 if(DebugLevel()>level) std::cout<<type<<"\t"<<msg1<<" : "<<msg2<<std::endl;
145 AliJEventHeader* ReadCommonHeader(AliVEvent *event);
146 // methods to read data from ESD
147 void ReadESDTracks(AliESDEvent* esd);
148 void ConvertESDTPCOnlyTracks(AliESDEvent* esd, int iTrack, AliJTrack * ctrack, double ptMin, double ptMax);
149 void ConvertESDGCGTracks(AliESDEvent* esd, int iTrack, AliJTrack * ctrack, double ptMin, double ptMax);
150 void ReadESDCaloClusters(const AliESDEvent* esd){;} // Not implemented
151 void ReadESDCaloCells(const AliESDEvent* esd){;} // Not implemented
152 void ReadESDHeader(AliESDEvent* esd);
153 void ReadESDPID(AliESDtrack* track, AliJTrack* ctrack);
154 // methods to read data from AOD
155 Bool_t ReadAODTracks(const AliAODEvent* aod);
156 Bool_t ReadAODCaloClusters(const AliAODEvent* aod) {return kFALSE;} // Not implemented
157 void ReadAODCaloCells(const AliAODEvent* aod){;} // Not implemented
158 void ReadAODHeader(AliAODEvent* aod);
160 void ReadMCTracksFromESD();
161 void ReadMCTracksFromAOD();
162 void RemapMCLabels();
164 Int_t GetSuperModuleNumber(bool isemcal, AliVCluster *cluster, AliVCaloCells *cells, Int_t absId);
165 Double_t* GetCellsAmplitude( bool isemcal, AliVCluster *cluster, AliVCaloCells *emCells, AliVCaloCells *phoCells );
167 UInt_t ConvertTriggerMask();//Converts alice trigger mask to JCorran trigger mask
168 //functions used for event selction:
169 bool AcceptAODTrack(AliAODTrack* aodTrack);
170 void SetOADBPath(const char* path) {fOADBPath=path;}
171 const char* GetOADBPath() const { return fOADBPath.Data(); }
173 // method to fill jcorran
174 void PrintOut() const;
177 void AddList(const char* aname, const char* cname, TClonesArray **obj, int nlist);
179 // d a t a m e m b e r s
180 AliESDtrackCuts* fEsdTrackCuts; // track selection cuts
181 AliAnalysisFilter * fESDFilter; // filter set of track selection BS
182 TVectorT<double> fIsRealOrMC; // flags if the input are real (0) ESDs or MonteCarlo ESDs (1)
183 TString fActiveTriggers[kRangeTriggerTableAlice]; // alice table mapping trigger bit to trigger name
184 TString fTriggerTableJCorran[kRangeTriggerTableJCorran]; // JCorran trigger table TBit 0 =MinBias
185 Bool_t fStoreEventPlaneSource; // store event plane
186 TString fOADBPath; // oadb path
187 TRefArray *fCaloClustersArr; //! calo cluster array
188 Double_t fClusterThreshold; // for event tropping
189 Double_t fTrackThreshold; // for event tropping
190 Bool_t fEventSuccess; //! if filter was successful with current event
192 TArrayI *fMcMap; //! mc index map
194 // jcorran output objects
195 TClonesArray * fTrackList; //! list of charged track objects
196 TClonesArray * fMCTrackList; //! list of charged track objects
197 TClonesArray * fPhotonList; //! list of photons objects
198 TClonesArray * fCaloCellList; //! list of calo cells
199 TClonesArray * fHeaderList; //! event details
200 TList * fRunInfoList; //! run details
201 AliPIDResponse *fPIDResponse; //! PID response object
202 AliPIDCombined *fPIDCombined; //! PID response object
204 AliESDVZERO* fVZEROData; //!
205 AliESDTZERO* fTZEROData; //!
206 // AliESDFMD* fFMDData;
207 AliESDZDC* fZDCData; //!
209 vector<Int_t> fEMCLabels; //! EMCal hit labels
210 vector<Int_t> fEMCTreeLabels; //! cascades for EMCal hits
212 AliJRunHeader* fAliJRunHeader; //! run details (mg field, trigger mask,etc...)
213 AliEMCALGeometry * fEMCALGeometry; //! emcal geometry
214 AliEMCALRecoUtils * fEMCALRecoUtils; //! reco utils
215 AliPHOSGeoUtils * fPHOSGeom; //! phos geometry matrix
216 AliAnalysisUtils *fAnaUtils; //! analysis utils ALICE
217 AliAnalysisTaskSE *fMyTask; //! task pointer
220 ClassDef(AliJFilter, 1);
222 #endif // AliJFilter_H