HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hparticleevtchara.h
Go to the documentation of this file.
1 #ifndef HPARTICLEEVTCHARABK_H
2 #define HPARTICLEEVTCHARABK_H
3 
4 #include "TString.h"
5 #include "TFile.h"
6 #include "TROOT.h"
7 #include "TSystem.h"
8 #include "TNamed.h"
9 #include "TH1F.h"
10 #include "TString.h"
11 #include "TFile.h"
12 #include "TMath.h"
13 #include "TROOT.h"
14 #include "TH2F.h"
15 #include "TH3F.h"
16 #include "TProfile2D.h"
17 #include "TF1.h"
18 #include "TStyle.h"
19 #include "TGraphErrors.h"
20 #include "TTree.h"
21 #include "vector"
22 #include "TNtuple.h"
23 #include "TVector2.h"
24 #include "TRandom2.h"
25 
26 #include "hades.h"
27 #include "htool.h"
28 #include "hphysicsconstants.h"
29 #include "hrootsource.h"
30 #include "hiterator.h"
31 #include "hloop.h"
32 #include "htime.h"
33 #include "hruntimedb.h"
34 #include "htaskset.h"
35 
36 #include "haddef.h"
37 #include "heventheader.h"
38 #include "hreconstructor.h"
39 #include "hparticledef.h"
40 #include "hparticlestructs.h"
41 #include "hparticlecand.h"
42 #include "hparticlecandsim.h"
43 
44 #include "hcategory.h"
45 #include "hcategorymanager.h"
46 #include "hparticleevtinfo.h"
47 
48 #include "walldef.h"
49 #include "hwallhitsim.h"
50 #include "henergylosscorrpar.h"
51 
52 using namespace std;
53 class HParticleCand;
54 class HCategory;
55 
57 
58 public:
59 
60 
61  // -------------------------------------------------------------------------
62  // flags for HParticleEvtChara, CentralityEstimator
64  kTOFRPC = 0,
65  kTOF ,
66  kRPC ,
82  kEt ,
83  kNumCentralityEstimator
84  };
85 
87  {
88  if(e ==kTOFRPC) return 500;
89  else if(e==kTOF) return 500;
90  else if(e==kRPC) return 500;
91  else if(e==kTOFRPCtot) return 500;
92  else if(e==kTOFtot) return 500;
93  else if(e==kRPCtot) return 500;
94  else if(e==kSelectedParticleCand) return 500;
95  else if(e==kSelectedParticleCandCorr) return 500;
96  else if(e==kSelectedParticleCandSecNorm) return 500;
97  else if(e==kSelectedParticleCandNorm) return 500;
98  else if(e==kSelectedParticleCandCorrPerWire) return 500;
99  else if(e==kPrimaryParticleCand) return 500;
100  else if(e==kMdcWires) return 1000;
101  else if(e==kMdcWiresOuterMod) return 1000;
102  else if(e==kFWSumChargeSpec) return 1000;
103  else if(e==kFWSumChargeZ) return 500;
104  else if(e==kDirectivity) return 1000;
105  else if(e==kRatioEtEz) return 1000;
106  else if(e==kEt) return 1000;
107  else return 0;
108  }
109 
111  {
112  if(e ==kTOFRPC) return 500;
113  else if(e==kTOF) return 500;
114  else if(e==kRPC) return 500;
115  else if(e==kTOFRPCtot) return 500;
116  else if(e==kTOFtot) return 500;
117  else if(e==kRPCtot) return 500;
118  else if(e==kSelectedParticleCand) return 500;
119  else if(e==kSelectedParticleCandCorr) return 500;
120  else if(e==kSelectedParticleCandSecNorm) return 50;
121  else if(e==kSelectedParticleCandNorm) return 50;
122  else if(e==kSelectedParticleCandCorrPerWire) return 500;
123  else if(e==kPrimaryParticleCand) return 500;
124  else if(e==kMdcWires) return 10000;
125  else if(e==kMdcWiresOuterMod) return 10000;
126  else if(e==kFWSumChargeSpec) return 10000;
127  else if(e==kFWSumChargeZ) return 500;
128  else if(e==kDirectivity) return 3;
129  else if(e==kRatioEtEz) return 3;
130  else if(e==kEt) return 30000;
131  else return 0;
132  }
133 
135  {
136  if(e ==kTOFRPC) return "TOFRPC";
137  else if(e==kTOF) return "TOF";
138  else if(e==kRPC) return "RPC";
139  else if(e==kTOFRPCtot) return "TOFRPCtot";
140  else if(e==kTOFtot) return "TOFtot";
141  else if(e==kRPCtot) return "RPCtot";
142  else if(e==kSelectedParticleCand) return "SelectedParticleCand";
143  else if(e==kSelectedParticleCandCorr) return "SelectedParticleCandCorr";
144  else if(e==kSelectedParticleCandSecNorm) return "SelectedParticleCandSecNorm";
145  else if(e==kSelectedParticleCandNorm) return "SelectedParticleCandNorm";
146  else if(e==kSelectedParticleCandCorrPerWire)return "SelectedParticleCandCorrPerWire";
147  else if(e==kPrimaryParticleCand) return "PrimaryParticleCand";
148  else if(e==kMdcWires) return "MdcWires";
149  else if(e==kMdcWiresOuterMod) return "MdcWiresOuterMod";
150  else if(e==kFWSumChargeSpec) return "FWSumChargeSpec";
151  else if(e==kFWSumChargeZ) return "FWSumChargeZ";
152  else if(e==kDirectivity) return "Directivity";
153  else if(e==kRatioEtEz) return "RatioEtEz";
154  else if(e==kEt) return "Et";
155  else return "";
156  }
157 
159  {
160  if(s.CompareTo("TOFRPC")==0 || s.CompareTo("TOFRPCtimecut")==0) return kTOFRPC;
161  else if(s.CompareTo("TOF")==0 || s.CompareTo("TOFtimecut")==0) return kTOF;
162  else if(s.CompareTo("RPC")==0 || s.CompareTo("RPCtimecut")==0) return kRPC;
163  else if(s.CompareTo("TOFRPCtot")==0) return kTOFRPCtot;
164  else if(s.CompareTo("TOFtot")==0) return kTOFtot;
165  else if(s.CompareTo("RPCtot")==0) return kRPCtot;
166  else if(s.CompareTo("SelectedParticleCand")==0) return kSelectedParticleCand;
167  else if(s.CompareTo("SelectedParticleCandCorr")==0) return kSelectedParticleCandCorr;
168  else if(s.CompareTo("SelectedParticleCandSecNorm")==0) return kSelectedParticleCandSecNorm;
169  else if(s.CompareTo("SelectedParticleCandNorm")==0) return kSelectedParticleCandNorm;
170  else if(s.CompareTo("SelectedParticleCandCorrPerWire")==0) return kSelectedParticleCandCorrPerWire;
171  else if(s.CompareTo("PrimaryParticleCand")==0) return kPrimaryParticleCand;
172  else if(s.CompareTo("MdcWires")==0) return kMdcWires;
173  else if(s.CompareTo("MdcWiresOuterMod")==0) return kMdcWiresOuterMod;
174  else if(s.CompareTo("FWSumChargeSpec")==0) return kFWSumChargeSpec;
175  else if(s.CompareTo("FWSumChargeZ")==0) return kFWSumChargeZ;
176  else if(s.CompareTo("Directivity")==0) return kDirectivity;
177  else if(s.CompareTo("RatioEtEz")==0) return kRatioEtEz;
178  else if(s.CompareTo("Et")==0) return kEt;
179  else return kNumCentralityEstimator;
180  }
181 
182 
183  // CentralityClass
185  k10 = 0, // (default) 10% classes
186  k5 , // 5% classes
187  k2 , // 2% classes
188  k1 , // 1% classes
189  k13 , // 13% classes
190  k15 , // 15% classes
191  k20 , // 20% classes
192  k1040 , // 10-40% class
193  kFOPI , // FOPI centrality classes
194  kNumCentralityClass
195  };
196 
197  TString getStringCentralityClass(UInt_t e)
198  {
199  if(e==k10) return "10pc";
200  else if(e==k5) return "5pc";
201  else if(e==k2) return "2pc";
202  else if(e==k1) return "1pc";
203  else if(e==k13) return "13pc";
204  else if(e==k15) return "15pc";
205  else if(e==k20) return "20pc";
206  else if(e==k1040) return "1040class";
207  else if(e==kFOPI) return "FOPI";
208  else return "";
209  }
210 
211  Float_t getCentralityClassBinSize(UInt_t e)
212  {
213  if(e==k10) return 10. ;
214  else if(e==k5) return 5. ;
215  else if(e==k2) return 2. ;
216  else if(e==k1) return 1. ;
217  else if(e==k13) return 13. ;
218  else if(e==k15) return 15. ;
219  else if(e==k20) return 20. ;
220  else if(e==k1040) return 0. ;
221  else if(e==kFOPI) return 0. ;
222  else return 0;
223  }
224 
225  enum eEventPlaneCorrection { // additive
226  kNoCorrection = 0x00, //
227  kSmear = 0x01, // 1
228  kShiftFW = 0x02, // 2
229  kScaleFW = 0x04, // 2
230  kReCenter = 0x08, // 4
231  kWidthEqualization = 0x10, // 8
232  kFlatten = 0x20, // 16
233  kWeightCharge = 0x40, // 32
234  kWeightTheta = 0x80,
235 
236  kScalingFW = kScaleFW,
237  kReCentering = kReCenter,
238  kScaling = kWidthEqualization,
239  kFlattening = kFlatten,
240  kRotation = kFlatten,
241 
242  kDefault = kShiftFW|kWeightCharge|kRotation
243  };
244 
246  {
247  TString s="";
248  if(e==kNoCorrection) return "NoCorrection";
249 
250  if(isFlagSet(kSmear,e) ) s +="Smear";
251  if(isFlagSet(kShiftFW,e) ) s +="ShifFW";
252  if(isFlagSet(kScaleFW,e) ) s +="ScalFW";
253  if(isFlagSet(kReCenter,e) ) s +="Recent";
254  if(isFlagSet(kScaling,e) ) s +="Scale";
255  if(isFlagSet(kFlattening,e) ) s +="Flatt";
256  if(isFlagSet(kWeightCharge,e) ) s +="WCharge";
257  if(isFlagSet(kWeightTheta,e) ) s +="WTheta";
258  return s;
259  }
260 
261  // EventPlaneCorrection Parameter
263  kFWx = 0,
265  kQx ,
266  kQy ,
292  kNumEventPlaneParameter
293  };
294 
296  {
297  if(e==kFWx) return "FWx" ;
298  else if(e==kFWy ) return "FWy" ;
299  else if(e==kQx ) return "Qx" ;
300  else if(e==kQy ) return "Qy" ;
301  else if(e==kQxWCharge ) return "QxWCharge" ;
302  else if(e==kQyWCharge ) return "QyWCharge" ;
303  else if(e==kQx2 ) return "Qx2" ;
304  else if(e==kQy2 ) return "Qy2" ;
305  else if(e==kQx2WCharge ) return "Qx2WCharge" ;
306  else if(e==kQy2WCharge ) return "Qy2WCharge" ;
307 
308  else if(e==kFourierC1 ) return "FourierC1" ;
309  else if(e==kFourierC2 ) return "FourierC2" ;
310  else if(e==kFourierC3 ) return "FourierC3" ;
311  else if(e==kFourierC4 ) return "FourierC4" ;
312  else if(e==kFourierC5 ) return "FourierC5" ;
313  else if(e==kFourierC6 ) return "FourierC6" ;
314  else if(e==kFourierC7 ) return "FourierC7" ;
315  else if(e==kFourierC8 ) return "FourierC8" ;
316  else if(e==kFourierS1 ) return "FourierS1" ;
317  else if(e==kFourierS2 ) return "FourierS2" ;
318  else if(e==kFourierS3 ) return "FourierS3" ;
319  else if(e==kFourierS4 ) return "FourierS4" ;
320  else if(e==kFourierS5 ) return "FourierS5" ;
321  else if(e==kFourierS6 ) return "FourierS6" ;
322  else if(e==kFourierS7 ) return "FourierS7" ;
323  else if(e==kFourierS8 ) return "FourierS8" ;
324  else if(e==kResolution ) return "Resolution" ;
325  else if(e==kResolutionWCharge) return "ResolutionWCharge";
326  else if(e==kChi ) return "Chi" ;
327  // if(e<kNumEventPlaneParameter) return StringEventPlaneParameter[e];
328  else return "";
329  }
330 
332  {
333  if(s.CompareTo("FWx")==0) return kFWx;
334  else if(s.CompareTo("FWy")==0) return kFWy;
335  else if(s.CompareTo("Qx")==0) return kQx;
336  else if(s.CompareTo("Qy")==0) return kQy;
337  else if(s.CompareTo("QxWCharge")==0) return kQxWCharge;
338  else if(s.CompareTo("QyWCharge")==0) return kQyWCharge;
339  else if(s.CompareTo("Qx2")==0) return kQx2;
340  else if(s.CompareTo("Qy2")==0) return kQy2;
341  else if(s.CompareTo("Qx2WCharge")==0) return kQx2WCharge;
342  else if(s.CompareTo("Qy2WCharge")==0) return kQy2WCharge;
343  else if(s.CompareTo("FourierC1")==0) return kFourierC1;
344  else if(s.CompareTo("FourierC2")==0) return kFourierC2;
345  else if(s.CompareTo("FourierC3")==0) return kFourierC3;
346  else if(s.CompareTo("FourierC4")==0) return kFourierC4;
347  else if(s.CompareTo("FourierC5")==0) return kFourierC5;
348  else if(s.CompareTo("FourierC6")==0) return kFourierC6;
349  else if(s.CompareTo("FourierC7")==0) return kFourierC7;
350  else if(s.CompareTo("FourierC8")==0) return kFourierC8;
351  else if(s.CompareTo("FourierS1")==0) return kFourierS1;
352  else if(s.CompareTo("FourierS2")==0) return kFourierS2;
353  else if(s.CompareTo("FourierS3")==0) return kFourierS3;
354  else if(s.CompareTo("FourierS4")==0) return kFourierS4;
355  else if(s.CompareTo("FourierS5")==0) return kFourierS5;
356  else if(s.CompareTo("FourierS6")==0) return kFourierS6;
357  else if(s.CompareTo("FourierS7")==0) return kFourierS7;
358  else if(s.CompareTo("FourierS8")==0) return kFourierS8;
359  else if(s.CompareTo("Resolution")==0) return kResolution;
360  else if(s.CompareTo("ResolutionWCharge")==0) return kResolutionWCharge;
361  else if(s.CompareTo("Chi")==0) return kChi;
362  else return kNumEventPlaneParameter;
363  }
364 
365 
366 
367  // static const char* getStringEventPlaneParameter(UInt_t e){
368  // if(e<kNumEventPlaneParameter) return StringEventPlaneParameter[e];
369  // else return "";
370  // }
371  // //{ return (e<kNumEventPlaneParameter)?StringEventPlaneParameter[e]:""; }
372  //
373  // UInt_t getEventPlaneParameterFromString(const char* valname)
374  // {
375  // TString name(valname);
376  // for(UInt_t i=0; i<kNumEventPlaneParameter; i++) {
377  // if(!name.CompareTo(StringEventPlaneParameter[i])) return i;
378  // }
379  // return kNumEventPlaneParameter; // alias none
380  // }
381 
382  // -------------------------------------------------------------------------
383  // helper class
385  public:
386  Int_t fSubEvent;
387  Float_t fPhi;
388  Float_t fPhiOrg;
389  Float_t fWeight1;
390  Float_t fWeight2;
391  UInt_t fFlag;
392 
393  SimpleQVector(Int_t se=0, Float_t phi=-1., Float_t w1=1., Float_t w2=1., UInt_t f=kNoCorrection){
394  fSubEvent = se;
395  fPhi = phi;
396  fWeight1 = w1;
397  fWeight2 = w2;
398  fFlag = f;
399  }
400 
401  void SetSubEvent(Int_t se) { fSubEvent = se;}
402  void SetFlag(UInt_t flag) { fFlag = flag;}
403  void Set(Float_t x, Float_t y, Float_t w1=1., Float_t w2=1.)
404  { fPhi = TVector2::Phi_0_2pi( TMath::Pi()+TMath::ATan2(-y,-x) );fWeight1 = w1;fWeight2 = w2;}
405  void SetOrg(Float_t x, Float_t y) { fPhiOrg = TVector2::Phi_0_2pi( TMath::Pi()+TMath::ATan2(-y,-x) );}
406 
407 // void Set(Float_t x, Float_t y) { fPhi = TVector2::Phi_0_2pi( TMath::Pi()+TMath::ATan2(-y,-x) );}
408 // void Set(Float_t x, Float_t y, Float_t w) { fPhi = TVector2::Phi_0_2pi( TMath::Pi()+TMath::ATan2(-y,-x) );fWeight1 = w;}
409 
410  void Rotate(Float_t psi) { fPhi = TVector2::Phi_0_2pi( fPhi+psi );}
411 
412 
413  UInt_t Flag() {return fFlag;}
414  Int_t SubEvent() {return fSubEvent;}
415  Float_t Weight1() {return fWeight1;}
416  Float_t Weight2() {return fWeight2;}
417 
418  Float_t Phi() {return fPhi;}
419  Float_t PhiOrg() {return fPhiOrg;}
420 
421  Float_t X() {return TMath::Cos(fPhi);}
422  Float_t Y() {return TMath::Sin(fPhi);}
423  Float_t XOrg() {return TMath::Cos(fPhiOrg);}
424  Float_t YOrg() {return TMath::Sin(fPhiOrg);}
425 
426  void print(){
427  //print stuff
428  printf("Phi: %.5f, PhiOrg: %.5f, Weight1: %.3f, Weight2: %.3f, SubEvent: %d \n",
429  fPhi,fPhiOrg,fWeight1,fWeight2,fSubEvent);
430  }
431 
432  void Clear()
433  {
434  fSubEvent = 0;
435  fPhi = -1.;
436  fPhiOrg = -1.;
437  fWeight1 = 1.;
438  fWeight2 = 1.;
439  fFlag = kNoCorrection;
440  }
441  };
442 
443 #define MAXFWCELLS 302
444 
445  // FWCutValues
446  enum eFWCut {
447  kBetaCuts = 0,
448  kTimeCuts = 1,
449  kChargeCuts = 2,
450  kNumFWCutValues = 3
451  };
452  TString getStringFWCutValues(UInt_t e)
453  {
454  if(e==kBetaCuts ) return "BetaCuts" ;
455  else if(e==kTimeCuts ) return "TimeCuts" ;
456  else if(e==kChargeCuts ) return "ChargeCuts" ;
457  else return "";
458  }
459 
460 
461  HParticleEvtChara(const Text_t* name="HParticleEvtChara",const Text_t* title="HParticleEvtChara"); /// constructor
462  ~HParticleEvtChara(); /// destructor
463  Float_t getVersion() {return 0.7;} // get parameterfile version, to avoid loading old format
464  Int_t getNumFWCells() {return MAXFWCELLS;}
465  Int_t execute();
466  Bool_t init();
467  Bool_t reinit();
468  Bool_t finalize(){ return kTRUE;}
469 
470  //setter:
471  void setPostFix(TString postFix) {fPostFix = postFix;}
472  Bool_t setParameterFile(TString ParameterFile);
473  void setUseFWCut(UInt_t eFWCut, Bool_t b=kTRUE) {useFWCut[eFWCut] = b;}
474  void setExcludeNoisyFWcells(Bool_t b=kTRUE) {excludeNoisyFWcells = b;}
475 
476  Int_t loadDayOfYear();
477  Bool_t loadParameterFile();
478  Bool_t saveParameterFile();
479  Bool_t loadCentralityEstimatorHist();
480  Bool_t addEstimatorHist(TH1F* hist, Float_t fractionXsection=100., UInt_t centE=kTOFRPC, Int_t direction=-1);
481  Bool_t saveCentralityEstimatorHist();
482 
483  Bool_t loadEventPlaneCorrectionHist();
484  Bool_t addEventPlaneCorrectionHist(TProfile2D *hist, UInt_t epParam=kQx);
485  Bool_t saveEventPlaneCorrectionHist();
486 
487  Bool_t loadFWCutValuesHist();
488  Bool_t addFWCutValuesHist(TH1 *hist, Int_t cell, UInt_t eFWCut);
489  Bool_t saveFWCutValuesHist();
490 
491  void setReferenceMean(Float_t referenceMean) {fReferenceMeanSelTrack = referenceMean;}
492 
493  //getter:
494  Bool_t isNewEvent();
495  Float_t getEventWeight();
496 
497  Int_t GetFWmoduleSize(HWallHitSim* wall);
498  Bool_t PassesCutsFW(HWallHitSim* wall);
499  Bool_t PassesCutsFW(HWallHitSim* wall, UInt_t eFWCut);
500 
501  TH1F* getEventPlaneCorrectionHist(UInt_t flag) const;
502  Float_t getCorrection(UInt_t flag=kQx);
503  Float_t getCorrectionError(UInt_t flag=kQx);
504  Int_t getFWCharge(HWallHitSim* wall);
505  Float_t getSmearValue(Int_t size=1);
506  Float_t getThetaWeight(HWallHitSim* wall, Float_t min=3.5, Float_t max=8.);
507 
508  vector<Int_t> getFWhits();
509  void fillHitArray();
510  void printHitArray();
511  void printQVectors();
512 
513  Bool_t fillQVectors(UInt_t EPcorr=kNoCorrection, UInt_t nHarmonic=1);
514 
515  Float_t getCorrectionPhi(Float_t phi);
516  Float_t getEventPlane(UInt_t EPcorr=kNoCorrection, UInt_t SubEvent=0, UInt_t nHarmonic=1);
517  Float_t getEventPlaneWeight(UInt_t EPcorr=kNoCorrection, UInt_t SubEvent=0, UInt_t nHarmonic=1);
518  Float_t getEventPlaneParameter(UInt_t flag=kQx, Bool_t corr=kFALSE);
519 
520 
521  Int_t getCentralityClass(TString estimator); // Lagacy function should not be used
522  Int_t getCentralityClass(UInt_t centE=kTOFRPC, UInt_t centC=k10); // Return centrality classes with adjusted fixed Cuts
523  Float_t getCentralityEstimator(UInt_t centE=kTOFRPC);
524  TH1F* getCentralityClassHist(UInt_t centE=kTOFRPC, UInt_t centC=k10) const;
525 
526  Bool_t printCentralityClass(TString estimator);
527  Bool_t printCentralityClass(UInt_t centE=kTOFRPC, UInt_t centC=k10);
528  Bool_t printCentralityClass(TH1* htemp);
529 
530 
531  Float_t getCentralityPercentile(TString estimator); // Return centrality percentile - Lagacy function should not be used
532  Float_t getCentralityPercentile(UInt_t centE=kTOFRPC); // Return centrality percentile [0.0-100.0%] of total cross section - Error gives 101% back
533  TH1F* getCentralityPercentileHist(UInt_t centE=kTOFRPC) const;
534 
535  Int_t getCentralityClass5(TString estimator); // Return centrality 5% classes binned from centrality percentile
536  Int_t getCentralityClass10(TString estimator); // Return centrality 10% classes binned from centrality percentile
537 
538  //maker
539  TH2D* makeEPresolution(TProfile2D* hist, Bool_t calcChi=kFALSE);
540  TH1* makeEPresolution(TH3* hist, Bool_t calcChi=kFALSE);
541  Double_t ModifiedBesselI( Int_t n , Double_t x) const;
542  Double_t ComputeResolution( Double_t x, Int_t n=1 ) const;
543  Double_t FindXi( Double_t res, Double_t prec=1e-6, Int_t n=1) const;
544 
545  TH1F* makePercentiles(TH1F* hist, Float_t fractionXsection=100., Int_t direction=-1);
546  Int_t getCentralityClassNbins(UInt_t centC=k10);
547  Float_t* getCentralityClassArray(UInt_t centC=k10);
548  TH1F* makeClasses(TH1F *h, Float_t fractionXsection=100., UInt_t centC=k10, Int_t direction=-1);
549 
550  //helper
551  Int_t getNbins(TString estimator);
552  Int_t getNbins(UInt_t centE=kTOFRPC, UInt_t centC=k10);
553  Float_t* getUpEdgeArray(UInt_t centE=kTOFRPC, UInt_t centC=k10);
554  Float_t* getBinCenterArray(UInt_t centE=kTOFRPC, UInt_t centC=k10);
555  vector<TString> getLabelArray(UInt_t centE=kTOFRPC, UInt_t centC=k10);
556 
557  // estimator getter:
558  Int_t getMdcWiresOuterMod();
559  Float_t getSelectedParticleCandSecNorm();
560  Float_t getSelectedParticleCandCorrPerWire();
561  Float_t getFWSumChargeSpec();
562  Float_t getFWSumZ(Int_t minZ=1, Int_t maxZ=99, UInt_t SubEvent=0);
563  Float_t getEt();
564  Float_t getRatioEtEz();
565  Float_t getDirectivity();
566 
567  void reset();
568  Int_t print();
569 
570 private:
571 
572  HCategory* fParticleCandCat; // ParticleCand category
573  HCategory* fParticleEvtInfoCat; // ParticleEvtInfo category
574  HCategory* fCatWallHit; // ForwardWall category
575 
576  TString fParameterFile; // location and name of ParameterFile
577  TFile* fFile;
578 
579  TRandom* fRandom;
580 
581  // -------------------------------------------------------------------------
582  UInt_t fDayOfYear; // day of the year extracted fron filename (sim=0)
583  UInt_t currentEventSeqNumber; // running seq. num. of event
584 
585  // flags
586  TString fPostFix;
587  Bool_t isSimulation; // for simulation if catGeantKine is available
588  Float_t fReferenceMeanSelTrack; // track running mean reference point
589 
590  vector<Float_t> fFWminBeta;
591  vector<Float_t> fFWmaxBeta;
592  vector<Float_t> fFWminCharge;
593  vector<Float_t> fFWChargeCuts;
594 
595  vector<vector<TH1*> > fCentralityHist;
597  vector<TH1*> fEstimatorHist;
599  vector<vector<TH1*> > fFWCutValuesHist;
600  vector<Bool_t> useFWCut;
602 
603  vector<SimpleQVector*> arrayOfHits;
604  vector<Int_t> iFWHitvector; // list of selected and shuffled FW hit-num.
605  vector<Float_t> vQPhi;
606 
607 
608 
611 
612  inline Bool_t isFlagSet(UInt_t flag, UInt_t status){ return (flag==(status&flag));}
613  inline Float_t getPhi(Float_t x, Float_t y){ return TVector2::Phi_0_2pi( TMath::Pi()+TMath::ATan2(-y,-x) );}
614 
615  ClassDef(HParticleEvtChara,3)
616 
617 };
618 
619 #endif
TString getStringCentralityClass(UInt_t e)
TString getStringCentralityEstimator(UInt_t e)
Float_t getCentralityClassBinSize(UInt_t e)
UInt_t getCentralityEstimatorFromString(TString s)
vector< TH1 * > fEstimatorHist
Float_t getVersion()
destructor
TString getStringEventPlaneCorrection(UInt_t e)
vector< Bool_t > useFWCut
Int_t n
vector< Float_t > fFWmaxBeta
void Set(Float_t x, Float_t y, Float_t w1=1., Float_t w2=1.)
void setReferenceMean(Float_t referenceMean)
void setExcludeNoisyFWcells(Bool_t b=kTRUE)
Float_t getPhi(Float_t x, Float_t y)
HCategory * fParticleEvtInfoCat
vector< Float_t > fFWminCharge
vector< Float_t > fFWminBeta
void SetOrg(Float_t x, Float_t y)
HCategory * fParticleCandCat
vector< TH2 * > fEventPlaneCorrectionHist
void setUseFWCut(UInt_t eFWCut, Bool_t b=kTRUE)
Int_t getCentralityEstimatorBinMax(UInt_t e)
vector< Float_t > fFWChargeCuts
Bool_t isFlagSet(UInt_t flag, UInt_t status)
vector< Float_t > vQPhi
void setPostFix(TString postFix)
Float_t phi
Definition: drawAccCuts.C:15
TString getStringFWCutValues(UInt_t e)
vector< TH1 * > fCentralityPercentileHist
vector< vector< TH1 * > > fFWCutValuesHist
UInt_t getEventPlaneParameterFromString(TString s)
SimpleQVector(Int_t se=0, Float_t phi=-1., Float_t w1=1., Float_t w2=1., UInt_t f=kNoCorrection)
Int_t getCentralityEstimatorBinSize(UInt_t e)
vector< vector< TH1 * > > fCentralityHist
#define MAXFWCELLS
TString getStringEventPlaneParameter(UInt_t e)
vector< Int_t > iFWHitvector
vector< SimpleQVector * > arrayOfHits