K0s code update (Matt Steinpries)
authorDhevan Raja Gangadharan <dhevan.raja.gangadharan@cern.ch>
Thu, 5 Dec 2013 11:15:50 +0000 (12:15 +0100)
committerDhevan Raja Gangadharan <dhevan.raja.gangadharan@cern.ch>
Thu, 5 Dec 2013 11:15:50 +0000 (12:15 +0100)
PWGCF/FEMTOSCOPY/K0Analysis/AliFemtoK0Analysis.cxx
PWGCF/FEMTOSCOPY/K0Analysis/AliFemtoK0Analysis.h

index bb2d799..9997fda 100644 (file)
@@ -100,6 +100,7 @@ AliAnalysisTaskSE(),
   fMinDecayLength(0.0),\r
   fMeritCutChoice(0),\r
   fMinSep(0.0),\r
+  fFlatCent(kFALSE),\r
   fEventCount(0),\r
   fEC(0x0),\r
   fEvt(0X0),\r
@@ -111,7 +112,7 @@ AliAnalysisTaskSE(),
 {\r
 }\r
 //________________________________________________________________________\r
-AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool SignDep, bool FieldPositive, bool OnlineCase, bool MeritCase, bool Case3D, float MinDL, int MeritCutChoice, float MinSep) \r
+AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool SignDep, bool FieldPositive, bool OnlineCase, bool MeritCase, bool Case3D, float MinDL, int MeritCutChoice, float MinSep, bool FlatCent) \r
 : AliAnalysisTaskSE(name),\r
   fSignDep(SignDep),\r
   fFieldPos(FieldPositive),\r
@@ -121,6 +122,7 @@ AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool SignDep, bool Fiel
   fMinDecayLength(MinDL),\r
   fMeritCutChoice(MeritCutChoice),\r
   fMinSep(MinSep),\r
+  fFlatCent(FlatCent),\r
   fEventCount(0),\r
   fEC(0x0),\r
   fEvt(0X0),\r
@@ -139,6 +141,7 @@ AliFemtoK0Analysis::AliFemtoK0Analysis(const char *name, bool SignDep, bool Fiel
   fMinDecayLength = MinDL;\r
   fMeritCutChoice = MeritCutChoice;\r
   fMinSep              = MinSep;\r
+  fFlatCent            = FlatCent;\r
 \r
   // Define output slots here \r
   // Output slot #1\r
@@ -156,6 +159,7 @@ AliFemtoK0Analysis::AliFemtoK0Analysis(const AliFemtoK0Analysis &obj)
   fMinDecayLength(obj.fMinDecayLength),\r
   fMeritCutChoice(obj.fMeritCutChoice),\r
   fMinSep(obj.fMinSep),\r
+  fFlatCent(obj.fFlatCent),\r
   fEventCount(obj.fEventCount),\r
   fEC(obj.fEC),\r
   fEvt(obj.fEvt),\r
@@ -180,6 +184,7 @@ AliFemtoK0Analysis &AliFemtoK0Analysis::operator=(const AliFemtoK0Analysis &obj)
  fMinDecayLength= obj.fMinDecayLength;\r
  fMeritCutChoice= obj.fMeritCutChoice;\r
  fMinSep               = obj.fMinSep;\r
+ fFlatCent             = obj.fFlatCent;\r
  fEventCount   = obj.fEventCount;\r
  fEC           = obj.fEC;\r
  fEvt          = obj.fEvt;\r
@@ -250,6 +255,10 @@ void AliFemtoK0Analysis::UserCreateOutputObjects()
 \r
   TH1F *fHistCent = new TH1F("fHistCent","",100,0,100);\r
   fOutputList->Add(fHistCent);\r
+  TH1F *fHistCentFlat = new TH1F("fHistCentFlat","",100,0,100);\r
+  fOutputList->Add(fHistCentFlat);\r
+  TH1F *fHistCentUsed = new TH1F("fHistCentUsed","",100,0,100);\r
+  fOutputList->Add(fHistCentUsed);\r
  \r
   //pion parameters\r
   TH1F* fHistDCAPiPlus = new TH1F("fHistDCAPiPlus","",100,0,10);\r
@@ -507,6 +516,14 @@ void AliFemtoK0Analysis::Exec(Option_t *)
   if(percent > 10 && isCentral) return;\r
   ((TH1F*)fOutputList->FindObject("fHistCent"))->Fill(percent);\r
   \r
+  //flatten centrality dist.\r
+  if(percent < 9){ \r
+   if(fFlatCent){\r
+    if(RejectEventCentFlat(bField,percent)) return; \r
+   }\r
+  }\r
+  ((TH1F*)fOutputList->FindObject("fHistCentFlat"))->Fill(percent);\r
+  \r
   //Vertexing\r
   AliAODVertex *primaryVertex;\r
   double vertex[3]={0};\r
@@ -589,7 +606,6 @@ void AliFemtoK0Analysis::Exec(Option_t *)
     bool orderswitch = kFALSE;\r
     if(tempTrack->Charge() > 0) {pos0or1 = 0; neg0or1 = 1;}\r
     else {pos0or1 = 1; neg0or1 = 0; orderswitch = kTRUE;}\r
-    //tempTrack->~AliAODTrack();\r
 \r
     //load daughter tracks\r
     AliAODTrack* prongTrackPos = (AliAODTrack*)v0->GetDaughter(pos0or1);\r
@@ -771,8 +787,7 @@ void AliFemtoK0Analysis::Exec(Option_t *)
         v0Count++;\r
     }\r
 \r
-    v0->~AliAODv0();\r
-    }//v0\r
+  }//v0\r
    \r
   if(k0Count<2) return;  //only keep events with more than 1 good K0\r
 \r
@@ -799,6 +814,7 @@ void AliFemtoK0Analysis::Exec(Option_t *)
   delete [] tempK0; tempK0 = NULL;\r
 \r
   ((TH1F*)fOutputList->FindObject("fHistMultK0"))->Fill(unskippedCount);       // changed 3/25, used to be "k0Count"\r
+  ((TH1F*)fOutputList->FindObject("fHistCentUsed"))->Fill(percent);\r
 \r
   //Printf("Reconstruction Finished. Starting pair studies.");\r
 \r
@@ -1265,4 +1281,18 @@ bool AliFemtoK0Analysis::CheckMeritCutWinner(int cutChoice, double oldPars[3], d
  return newV0Wins;\r
 }\r
 \r
+bool AliFemtoK0Analysis::RejectEventCentFlat(float MagField, float CentPercent)\r
+{ // to flatten centrality distribution\r
+ bool RejectEvent = kFALSE;\r
+ int weightBinSign;\r
+ if(MagField > 0) weightBinSign = 0;\r
+ else weightBinSign = 1;\r
+ float kCentWeight[2][9] = {{.878,.876,.860,.859,.859,.88,.873,.879,.894},\r
+                                                {.828,.793,.776,.772,.775,.796,.788,.804,.839}};\r
+ int weightBinCent = (int) CentPercent;\r
+ if(fRandomNumber->Rndm() > kCentWeight[weightBinSign][weightBinCent]) RejectEvent = kTRUE;\r
+\r
+ return RejectEvent;\r
+}\r
+  \r
 \r
index 5745194..b29b321 100644 (file)
@@ -1,82 +1,84 @@
-#ifndef ALIFEMTOK0ANALYSIS_H
-#define ALIFEMTOK0ANALYSIS_H
-
-//
-// Class AliFemtoK0Analysis
-//
-// AliFemtoK0Analysis
-// author:
-//        Matthew Steinpreis (matthew.steinpreis@cern.ch)
-//
-
-class TH1F;
-class TH1D;
-class TH2D;
-class TH3D;
-class TProfile;
-class TRandom3;
-
-class AliESDEvent;
-class AliAODEvent;
-class AliESDtrackCuts;
-class AliESDpid;
-
-#include "AliAnalysisTask.h"
-#include "AliAnalysisTaskSE.h"
-#include "AliFemtoK0EventCollection.h"
-#include "AliAODpidUtil.h"
-#include "AliESDpid.h"
-
-class AliFemtoK0Analysis : public AliAnalysisTaskSE {
- public:
-  AliFemtoK0Analysis();
-  AliFemtoK0Analysis(const char *name, bool SignDep = kFALSE, bool FieldPositive = kTRUE, bool OnlineCase = kTRUE, bool MeritCase = kTRUE, bool Case3D = kFALSE, float MinDL = 0.0, int MeritCutChoice = 2, float MinSep = 5.0);
-  virtual ~AliFemtoK0Analysis();
-  AliFemtoK0Analysis(const AliFemtoK0Analysis&);
-  AliFemtoK0Analysis& operator=(const AliFemtoK0Analysis&);
-
- private:
-  
-  virtual void   UserCreateOutputObjects();
-  virtual void   Exec(Option_t *option);
-  virtual void   Terminate(Option_t *);  
-
-  void MyInit();
-  void GetGlobalPositionAtGlobalRadiiThroughTPC(const AliAODTrack *track, const Float_t bfield, Float_t globalPositionsAtRadii[9][3], double PrimaryVertex[3]);
-  bool CheckMeritCutWinner(int cutChoice, double oldPars[3], double newPars[3]);
-  
-  enum 
-  {
-    kCentBins    = 16,
-    kZVertexBins = 10,
-    kEventsToMix =  5,
-    kMultLimit   = 300,              //maximum number of v0s, array size
-    ncthetabins = 36,
-    nphibins    = 72
-  };
-
-  bool fSignDep;
-  bool fFieldPos;
-  bool fOnlineCase;
-  bool fMeritCase;
-  bool fCase3D;
-  float fMinDecayLength;
-  int fMeritCutChoice;
-  float fMinSep;
-  int fEventCount;
-
-  AliFemtoK0EventCollection ***fEC; //!
-  AliFemtoK0Event *fEvt; //!
-
-  TRandom3* fRandomNumber; //!
-  
-  const char     *fName;
-  AliAODEvent    *fAOD; //!    // AOD object
-  TList          *fOutputList; //! Compact Output list
-  AliPIDResponse *fPidAOD; //!
-  
-  ClassDef(AliFemtoK0Analysis, 1); 
-};
-
-#endif
+#ifndef ALIFEMTOK0ANALYSIS_H\r
+#define ALIFEMTOK0ANALYSIS_H\r
+\r
+//\r
+// Class AliFemtoK0Analysis\r
+//\r
+// AliFemtoK0Analysis\r
+// author:\r
+//        Matthew Steinpreis (matthew.steinpreis@cern.ch)\r
+//\r
+\r
+class TH1F;\r
+class TH1D;\r
+class TH2D;\r
+class TH3D;\r
+class TProfile;\r
+class TRandom3;\r
+\r
+class AliESDEvent;\r
+class AliAODEvent;\r
+class AliESDtrackCuts;\r
+class AliESDpid;\r
+\r
+#include "AliAnalysisTask.h"\r
+#include "AliAnalysisTaskSE.h"\r
+#include "AliFemtoK0EventCollection.h"\r
+#include "AliAODpidUtil.h"\r
+#include "AliESDpid.h"\r
+\r
+class AliFemtoK0Analysis : public AliAnalysisTaskSE {\r
+ public:\r
+  AliFemtoK0Analysis();\r
+  AliFemtoK0Analysis(const char *name, bool SignDep = kFALSE, bool FieldPositive = kTRUE, bool OnlineCase = kTRUE, bool MeritCase = kTRUE, bool Case3D = kFALSE, float MinDL = 0.0, int MeritCutChoice = 2, float MinSep = 5.0, bool FlatCent = kFALSE);\r
+  virtual ~AliFemtoK0Analysis();\r
+  AliFemtoK0Analysis(const AliFemtoK0Analysis&);\r
+  AliFemtoK0Analysis& operator=(const AliFemtoK0Analysis&);\r
+\r
+ private:\r
+  \r
+  virtual void   UserCreateOutputObjects();\r
+  virtual void   Exec(Option_t *option);\r
+  virtual void   Terminate(Option_t *);  \r
+\r
+  void MyInit();\r
+  void GetGlobalPositionAtGlobalRadiiThroughTPC(const AliAODTrack *track, const Float_t bfield, Float_t globalPositionsAtRadii[9][3], double PrimaryVertex[3]);\r
+  bool CheckMeritCutWinner(int cutChoice, double oldPars[3], double newPars[3]);\r
+  bool RejectEventCentFlat(float MagField, float CentPercent);\r
+  \r
+  enum \r
+  {\r
+    kCentBins    = 16,\r
+    kZVertexBins = 10,\r
+    kEventsToMix =  5,\r
+    kMultLimit   = 300,              //maximum number of v0s, array size\r
\r
+    ncthetabins = 36,\r
+    nphibins    = 72\r
+  };\r
+\r
+  bool fSignDep;\r
+  bool fFieldPos;\r
+  bool fOnlineCase;\r
+  bool fMeritCase;\r
+  bool fCase3D;\r
+  float fMinDecayLength;\r
+  int fMeritCutChoice;\r
+  float fMinSep;\r
+  bool fFlatCent;\r
+  int fEventCount;\r
+\r
+  AliFemtoK0EventCollection ***fEC; //!\r
+  AliFemtoK0Event *fEvt; //!\r
+\r
+  TRandom3* fRandomNumber; //!\r
+  \r
+  const char     *fName;\r
+  AliAODEvent    *fAOD; //!    // AOD object\r
+  TList          *fOutputList; //! Compact Output list\r
+  AliPIDResponse *fPidAOD; //!\r
+  \r
+  ClassDef(AliFemtoK0Analysis, 1); \r
+};\r
+\r
+#endif\r