]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
-- changes by Michael Knichel
authorjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Apr 2011 08:45:02 +0000 (08:45 +0000)
committerjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Apr 2011 08:45:02 +0000 (08:45 +0000)
-- new TPC track selection
M    dNdPt/macros/CreatedNdPtTrackCuts.C
-- new geom. acceptance cuts
M    dNdPt/AlidNdPt.h
M    dNdPt/AlidNdPtAnalysis.h
M    dNdPt/AlidNdPtAcceptanceCuts.h
M    dNdPt/AlidNdPtAnalysisPbPb.h
M    dNdPt/AlidNdPtHelper.cxx
M    dNdPt/AlidNdPt.cxx
M    dNdPt/AlidNdPtAnalysis.cxx
M    dNdPt/AlidNdPtAcceptanceCuts.cxx
M    dNdPt/AlidNdPtAnalysisPbPb.cxx

PWG0/dNdPt/AlidNdPt.cxx
PWG0/dNdPt/AlidNdPt.h
PWG0/dNdPt/AlidNdPtAcceptanceCuts.cxx
PWG0/dNdPt/AlidNdPtAcceptanceCuts.h
PWG0/dNdPt/AlidNdPtAnalysis.cxx
PWG0/dNdPt/AlidNdPtAnalysis.h
PWG0/dNdPt/AlidNdPtAnalysisPbPb.cxx
PWG0/dNdPt/AlidNdPtAnalysisPbPb.h
PWG0/dNdPt/AlidNdPtHelper.cxx
PWG0/dNdPt/macros/CreatedNdPtTrackCuts.C

index 4be52ef270600fced383172dc185915eefaab7fa..38b66ce5d921c1b4163d51107fef49c361b0ba68 100644 (file)
@@ -12,6 +12,7 @@
  * about the suitability of this software for any purpose. It is          *\r
  * provided "as is" without express or implied warranty.                  *\r
  **************************************************************************/\r
+ // last change: 2011-04-04 by M.Knichel\r
 \r
 #include "AliESDtrackCuts.h"  \r
 #include "AlidNdPtEventCuts.h"\r
@@ -28,6 +29,7 @@ ClassImp(AlidNdPt)
 AlidNdPt::AlidNdPt(): TNamed()\r
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
+, fdNdPtRecAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
@@ -44,6 +46,7 @@ AlidNdPt::AlidNdPt(): TNamed()
 AlidNdPt::AlidNdPt(Char_t* name, Char_t* title): TNamed(name,title)\r
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
+, fdNdPtRecAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
@@ -59,6 +62,7 @@ AlidNdPt::AlidNdPt(Char_t* name, Char_t* title): TNamed(name,title)
 AlidNdPt::AlidNdPt(const AlidNdPt&): TNamed()\r
 , fdNdPtEventCuts(0)\r
 , fdNdPtAcceptanceCuts(0)\r
+, fdNdPtRecAcceptanceCuts(0)\r
 , fEsdTrackCuts(0)\r
 , fUseMCInfo(kFALSE)\r
 , fAnalysisMode(AlidNdPtHelper::kTPC) \r
@@ -82,6 +86,7 @@ AlidNdPt::~AlidNdPt() {
   // destructor\r
   if(fdNdPtEventCuts) delete fdNdPtEventCuts; fdNdPtEventCuts=NULL; \r
   if(fdNdPtAcceptanceCuts) delete fdNdPtAcceptanceCuts; fdNdPtAcceptanceCuts=NULL;\r
+  if(fdNdPtRecAcceptanceCuts) delete fdNdPtRecAcceptanceCuts; fdNdPtRecAcceptanceCuts=NULL;  \r
   if(fEsdTrackCuts) delete fEsdTrackCuts; fEsdTrackCuts=NULL;\r
   if(fPhysicsSelection) delete fPhysicsSelection; fPhysicsSelection=NULL;\r
   if(fdNdPtBackgroundCuts) delete fdNdPtBackgroundCuts; fdNdPtBackgroundCuts=NULL;\r
index 45ba15576c8d39e8d3b17f8a8752a15ef8f1139b..a6a0e7217d58e755d7d519b601e8ce49ff7c72da 100644 (file)
@@ -5,6 +5,7 @@
 // Abstract class for dNdPt analysis. All dNdPt components should derive from it.   
 // 
 // Author: J.Otwinowski 03/11/2008 
+// last change: 2011-04-04 by M.Knichel
 //------------------------------------------------------------------------------
 
 class AliESDEvent; 
@@ -46,6 +47,7 @@ public:
   //
   void SetEventCuts(AlidNdPtEventCuts* const cuts)              { fdNdPtEventCuts = cuts; }
   void SetAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts)    { fdNdPtAcceptanceCuts = cuts; }
+  void SetRecAcceptanceCuts(AlidNdPtAcceptanceCuts* const cuts) { fdNdPtRecAcceptanceCuts = cuts; }
   void SetTrackCuts(AliESDtrackCuts* const cuts)                { fEsdTrackCuts = cuts; }
   void SetUseMCInfo(const Bool_t info)                          { fUseMCInfo = info; }
   void SetAnalysisMode(const AlidNdPtHelper::AnalysisMode mode) { fAnalysisMode = mode; }
@@ -57,6 +59,7 @@ public:
 
   AlidNdPtEventCuts* GetEventCuts() const                       { return fdNdPtEventCuts; }
   AlidNdPtAcceptanceCuts* GetAcceptanceCuts() const             { return fdNdPtAcceptanceCuts; }
+  AlidNdPtAcceptanceCuts* GetRecAcceptanceCuts() const          { return fdNdPtRecAcceptanceCuts; }  
   AliESDtrackCuts* GetTrackCuts() const                         { return fEsdTrackCuts; }
   Bool_t IsUseMCInfo() const                                    { return fUseMCInfo; }
   AlidNdPtHelper::AnalysisMode GetAnalysisMode() const          { return fAnalysisMode; }
@@ -72,7 +75,8 @@ private:
   AlidNdPt& operator=(const AlidNdPt&); // not implemented
 
   AlidNdPtEventCuts      *fdNdPtEventCuts;      // event cuts
-  AlidNdPtAcceptanceCuts *fdNdPtAcceptanceCuts; // acceptance cuts
+  AlidNdPtAcceptanceCuts *fdNdPtAcceptanceCuts; // acceptance cuts  
+  AlidNdPtAcceptanceCuts *fdNdPtRecAcceptanceCuts; // additional recontruction acceptance cuts (not used for MC truth)
   AliESDtrackCuts *fEsdTrackCuts;               // esd track cuts
 
   Bool_t fUseMCInfo;                            // use MC information
@@ -84,7 +88,7 @@ private:
   AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class
   AlidNdPtBackgroundCuts *fdNdPtBackgroundCuts; // background cuts (cosmics and splitted tracks)
 
-  ClassDef(AlidNdPt,1);
+  ClassDef(AlidNdPt,2);
 };
 
 #endif
index c604abef6c9f49dc175c2b138a80c67ea4ced349..7482430aa494c101b19b030c531a466f33ae9118 100644 (file)
@@ -12,6 +12,7 @@
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
+// last change: 2011-04-04 by M.Knichel
 
 #include <iostream>
 #include <TList.h>
@@ -36,6 +37,11 @@ AliAnalysisCuts(name, title)
 , fMaxPhi(0)
 , fMinPt(0)
 , fMaxPt(0)
+, fExcludeMinEta(0)
+, fExcludeMaxEta(0)
+, fExcludeMinPhi(0)
+, fExcludeMaxPhi(0)
+, fCheckRange(kFALSE)
 , fMaxDCAr(0)
 , fMaxDCAz(0)
 {
@@ -78,6 +84,10 @@ Bool_t AlidNdPtAcceptanceCuts::AcceptTrack(AliESDtrack *track)
   if(phi > fMaxPhi) return kFALSE;
   if(pt < fMinPt) return kFALSE;
   if(pt > fMaxPt) return kFALSE;
+  
+  if (fCheckRange) {
+      if ((eta > fExcludeMinEta) && (eta < fExcludeMaxEta) && (phi > fExcludeMinPhi) && (phi < fExcludeMaxPhi)) { return kFALSE; }
+  }
 
 return kTRUE;
 }
index 1f34f5981021f71f381697cb7ff779f18d53e378..34910fb7021a63c1de3c96ddf81992ed56edb871 100644 (file)
@@ -5,6 +5,7 @@
 // Class to keep selection cuts for MC tracks. \r
 // \r
 // Author: J.Otwinowski 03/11/2008 \r
+// last change: 2011-04-04 by M.Knichel\r
 //------------------------------------------------------------------------------\r
 \r
 class TParticle;\r
@@ -20,9 +21,11 @@ public:
   virtual ~AlidNdPtAcceptanceCuts(); \r
  \r
   // setters \r
-  void SetEtaRange(const Float_t min=0., const Float_t max=1e99)  { fMinEta=min; fMaxEta=max; }\r
-  void SetPhiRange(const Float_t min=0., const Float_t max=1e99)  { fMinPhi=min; fMaxPhi=max;}\r
-  void SetPtRange(const Float_t min=0., const Float_t max=1e99)   { fMinPt=min;  fMaxPt=max;}\r
+  void SetEtaRange(const Float_t min=-1e99, const Float_t max=1e99)  { fMinEta=min; fMaxEta=max; }\r
+  void SetPhiRange(const Float_t min=-1e99, const Float_t max=1e99)  { fMinPhi=min; fMaxPhi=max;}\r
+  void SetPtRange(const Float_t min=-1e99, const Float_t max=1e99)   { fMinPt=min;  fMaxPt=max;}\r
+  void SetExcludeEtaPhiRange(const Float_t etaMin, const Float_t etaMax, const Float_t phiMin, const Float_t phiMax)\r
+       { fExcludeMinEta = etaMin; fExcludeMaxEta = etaMax; fExcludeMinPhi = phiMin; fExcludeMaxPhi = phiMax; fCheckRange=kTRUE; }\r
 \r
   void SetMaxDCAr(const Float_t max=1e99) { fMaxDCAr=max;}\r
   void SetMaxDCAz(const Float_t max=1e99) { fMaxDCAz=max;}\r
@@ -34,6 +37,12 @@ public:
   Float_t GetMaxPhi() const {return fMaxPhi;}\r
   Float_t GetMinPt() const {return fMinPt;}\r
   Float_t GetMaxPt() const {return fMaxPt;}\r
+  \r
+  Bool_t  GetCheckRange() const { return fCheckRange; }\r
+  Float_t GetExcludeMinEta() const { return fExcludeMinEta; }\r
+  Float_t GetExcludeMaxEta() const { return fExcludeMaxEta; }\r
+  Float_t GetExcludeMinPhi() const { return fExcludeMinPhi; }\r
+  Float_t GetExcludeMaxPhi() const { return fExcludeMaxPhi; }  \r
 \r
   Float_t GetMaxDCAr() const {return fMaxDCAr;}\r
   Float_t GetMaxDCAz() const {return fMaxDCAz;}\r
@@ -60,6 +69,12 @@ private:
   Float_t fMaxPhi; // max azimuthal angle (rad)\r
   Float_t fMinPt;  // min pt\r
   Float_t fMaxPt;  // max pt\r
+  \r
+  Float_t fExcludeMinEta;\r
+  Float_t fExcludeMaxEta;\r
+  Float_t fExcludeMinPhi;\r
+  Float_t fExcludeMaxPhi;\r
+  Bool_t  fCheckRange;\r
 \r
   // max DCAr and DCAz with respect\r
   // to nominal vertex position\r
@@ -69,7 +84,7 @@ private:
   AlidNdPtAcceptanceCuts(const AlidNdPtAcceptanceCuts&); // not implemented\r
   AlidNdPtAcceptanceCuts& operator=(const AlidNdPtAcceptanceCuts&); // not implemented\r
 \r
-  ClassDef(AlidNdPtAcceptanceCuts, 1)\r
+  ClassDef(AlidNdPtAcceptanceCuts, 2)\r
 };\r
 \r
 #endif // \r
index 73f358ab33dfdb2ae2deb1dd3405ff260cb38971..f8f290ae083888e94196feb2766ff6e96ef36775 100644 (file)
@@ -25,6 +25,7 @@
 // - control histograms\r
 //\r
 // Author: J.Otwinowski 04/11/2008 \r
+// last change: 2011-04-04 by M.Knichel\r
 //------------------------------------------------------------------------------\r
 \r
 #include "TH1.h"\r
@@ -140,7 +141,21 @@ ClassImp(AlidNdPtAnalysis)
   fRecTrackHist(0),\r
 \r
   // Candle event histogram\r
-  fRecCandleEventMatrix(0)\r
+  fRecCandleEventMatrix(0),\r
+  \r
+  fMultNbins(0),\r
+  fPtNbins(0),\r
+  fPtCorrNbins(0),\r
+  fEtaNbins(0),\r
+  fZvNbins(0),\r
+  fBinsMult(0),\r
+  fBinsPt(0),\r
+  fBinsPtCorr(0),\r
+  fBinsEta(0),\r
+  fBinsZv(0),\r
+\r
+  fIsInit(kFALSE)  \r
+  \r
 {\r
   // default constructor\r
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { \r
@@ -151,7 +166,7 @@ ClassImp(AlidNdPtAnalysis)
     fRecTrackHist1[i]=0;     \r
     fRecTrackMultHist1[i]=0;     \r
   }\r
-  Init();\r
+  //Init();\r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -239,7 +254,21 @@ AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,t
   fRecTrackHist(0),\r
 \r
   // Candle event histogram\r
-  fRecCandleEventMatrix(0)\r
+  fRecCandleEventMatrix(0),\r
+  \r
+  fMultNbins(0),\r
+  fPtNbins(0),\r
+  fPtCorrNbins(0),\r
+  fEtaNbins(0),\r
+  fZvNbins(0),\r
+  fBinsMult(0),\r
+  fBinsPt(0),\r
+  fBinsPtCorr(0),\r
+  fBinsEta(0),\r
+  fBinsZv(0),\r
+\r
+  fIsInit(kFALSE)  \r
+  \r
 {\r
   //\r
   // constructor\r
@@ -253,7 +282,7 @@ AlidNdPtAnalysis::AlidNdPtAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,t
     fRecTrackMultHist1[i]=0; \r
   }\r
 \r
-  Init();\r
+  //Init();\r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -344,28 +373,36 @@ AlidNdPtAnalysis::~AlidNdPtAnalysis() {
 \r
 //_____________________________________________________________________________\r
 void AlidNdPtAnalysis::Init(){\r
-  //\r
-  // Init histograms\r
-  //\r
-\r
-  const Int_t multNbins = 27;\r
-  const Int_t ptNbinsTrackEventCorr = 36;\r
-  const Int_t ptNbins = 68;\r
-  const Int_t etaNbins = 30;\r
-  const Int_t zvNbins = 12;\r
+  \r
+  Int_t multNbins = 27;\r
+  Int_t ptNbinsTrackEventCorr = 36;\r
+  Int_t ptNbins = 68;\r
+  Int_t etaNbins = 30;\r
+  Int_t zvNbins = 12;\r
 \r
-  Double_t binsMult[multNbins+1] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,\r
+  Double_t binsMultDefault[28] = {-0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,\r
                                      9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,\r
                                     19.5,20.5, 21.5, 22.5, 23.5, 24.5, 29.5, 149.5};\r
 \r
-  Double_t binsPtTrackEventCorr[ptNbinsTrackEventCorr+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,50.0};\r
+  Double_t binsPtTrackEventCorrDefault[37] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,50.0};\r
 \r
-  Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
+  Double_t binsPtDefault[69] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0};\r
 \r
-  Double_t binsEta[etaNbins+1] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
+  Double_t binsEtaDefault[31] = {-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5};\r
 \r
-  Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
-  //Double_t binsMult[multNbins+1] = {0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,12.,14.,16.,18.,20.,30.,40.,50.,70.,90.,110.,150.};\r
+  Double_t binsZvDefault[13] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};\r
+  \r
+  Double_t* binsMult = binsMultDefault;\r
+  Double_t* binsPtTrackEventCorr = binsPtTrackEventCorrDefault;\r
+  Double_t* binsPt = binsPtDefault;\r
+  Double_t* binsEta = binsEtaDefault;\r
+  Double_t* binsZv = binsZvDefault;  \r
+\r
+  if (fMultNbins > 0) { multNbins = fMultNbins; binsMult = fBinsMult; }\r
+  if (fPtNbins > 0) { ptNbins  = fPtNbins; binsPt = fBinsPt; }\r
+  if (fPtCorrNbins > 0) { ptNbinsTrackEventCorr  = fPtCorrNbins; binsPtTrackEventCorr = fBinsPtCorr;  }\r
+  if (fEtaNbins > 0) { etaNbins  = fEtaNbins; binsEta = fBinsEta; }\r
+  if (fZvNbins > 0) { zvNbins  = fZvNbins; binsZv = fBinsZv; }  \r
 \r
   //Int_t binsTrackMatrix[3]={zvNbins,ptNbins,etaNbins};\r
   Int_t binsTrackEventCorrMatrix[3]={zvNbins,ptNbinsTrackEventCorr,etaNbins};\r
@@ -955,11 +992,17 @@ void AlidNdPtAnalysis::Init(){
 \r
   // init folder\r
   fAnalysisFolder = CreateFolder("folderdNdPt","Analysis dNdPt Folder");\r
+  \r
+  // set init flag\r
+  fIsInit = kTRUE;\r
 }\r
 \r
 //_____________________________________________________________________________\r
 void AlidNdPtAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent)\r
 {\r
+  //  init if not done already\r
+  if (!fIsInit) { Init(); }\r
+  \r
   //\r
   // Process real and/or simulated events\r
   //\r
@@ -1876,6 +1919,9 @@ void AlidNdPtAnalysis::FillHistograms(AliStack *const stack, Int_t label, AlidNd
 //_____________________________________________________________________________\r
 Long64_t AlidNdPtAnalysis::Merge(TCollection* const list) \r
 {\r
+  //  init if not done already\r
+  if (!fIsInit) { Init(); }\r
+  \r
   // Merge list of objects (needed by PROOF)\r
 \r
   if (!list)\r
@@ -2040,6 +2086,9 @@ return kFALSE;
 //_____________________________________________________________________________\r
 void AlidNdPtAnalysis::Analyse() \r
 {\r
+  //  init if not done already\r
+  if (!fIsInit) { Init(); }\r
+  \r
   // Analyse histograms\r
   //\r
   TH1::AddDirectory(kFALSE);\r
index 90bf3446a7851592fcd7058463efbcf7bad6a25f..848fff38c494603982ff0ebc2476aff1f12651e8 100644 (file)
@@ -5,6 +5,7 @@
 // AlidNdPtAnalysis class used for dNdPt analysis. 
 // 
 // Author: J.Otwinowski 04/11/2008 
+// last change: 2011-04-04 by M.Knichel
 //------------------------------------------------------------------------------
 
 class iostream;
@@ -62,6 +63,14 @@ public :
   // Create folder for analysed histograms
   TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
 
+  // Set binning for Histograms (if not set default binning is used)
+  void SetBinsMult(Int_t nbins, Double_t* edges) { fMultNbins = nbins; fBinsMult = edges; }
+  void SetBinsPt(Int_t nbins, Double_t* edges) { fPtNbins = nbins; fBinsPt = edges; }
+  void SetBinsPtCorr(Int_t nbins, Double_t* edges) { fPtCorrNbins = nbins; fBinsPtCorr = edges; }
+  void SetBinsEta(Int_t nbins, Double_t* edges) { fEtaNbins = nbins; fBinsEta = edges; }
+  void SetBinsZv(Int_t nbins, Double_t* edges) { fZvNbins = nbins; fBinsZv = edges; }  
+
+
   // Fill histograms
   void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj);
   void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj);
@@ -275,10 +284,24 @@ private:
   //
   THnSparseF *fRecCandleEventMatrix; //-> Zv:multMB
 
+  //binning for THNsparse
+  Int_t        fMultNbins;
+  Int_t fPtNbins;
+  Int_t fPtCorrNbins;
+  Int_t fEtaNbins;
+  Int_t fZvNbins;
+  Double_t* fBinsMult;
+  Double_t* fBinsPt;
+  Double_t* fBinsPtCorr;
+  Double_t* fBinsEta;
+  Double_t* fBinsZv;
+  
+  Bool_t fIsInit;
+
   AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
   AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
 
-  ClassDef(AlidNdPtAnalysis,4);
+  ClassDef(AlidNdPtAnalysis,5);
 };
 
 #endif
index db06fc8ededb8d68250408a5e60d3ea025b1e7ab..4a95c4fca200ea67a8820cfac0acd068804dfe93 100644 (file)
@@ -25,7 +25,7 @@
 // - control histograms
 //
 // Author: J.Otwinowski 04/11/2008 
-// changed by M.L.Knichel 2011-03-08
+// last change: 2011-04-04 by M.Knichel
 //------------------------------------------------------------------------------
 
 #include "TH1.h"
@@ -111,7 +111,22 @@ ClassImp(AlidNdPtAnalysisPbPb)
   
   fTriggerAnalysis(0),
   
-  fCentralityEstimator(0)
+  fCentralityEstimator(0),
+  
+  fMultNbins(0),
+  fPtNbins(0),
+  fPtCorrNbins(0),
+  fEtaNbins(0),
+  fZvNbins(0),
+  fCentralityNbins(0),
+  fBinsMult(0),
+  fBinsPt(0),
+  fBinsPtCorr(0),
+  fBinsEta(0),
+  fBinsZv(0),
+  fBinsCentrality(0),
+  
+  fIsInit(kFALSE)
 {
   // default constructor
   for(Int_t i=0; i<AlidNdPtHelper::kCutSteps; i++) { 
@@ -123,7 +138,8 @@ ClassImp(AlidNdPtAnalysisPbPb)
     fRecTrackHist2[i]=0;     
     fRecTrackMultHist1[i]=0;     
   }
-  Init();
+  //Init();
+  SetCentralityEstimator();
 }
 
 //_____________________________________________________________________________
@@ -181,7 +197,23 @@ AlidNdPtAnalysisPbPb::AlidNdPtAnalysisPbPb(Char_t* name, Char_t* title): AlidNdP
   
   fTriggerAnalysis(0),
   
-  fCentralityEstimator(0)
+  fCentralityEstimator(0),
+  
+  fMultNbins(0),
+  fPtNbins(0),
+  fPtCorrNbins(0),
+  fEtaNbins(0),
+  fZvNbins(0),
+  fCentralityNbins(0),
+  fBinsMult(0),
+  fBinsPt(0),
+  fBinsPtCorr(0),
+  fBinsEta(0),
+  fBinsZv(0),
+  fBinsCentrality(0),
+  
+  fIsInit(kFALSE)  
+  
 {
   //
   // constructor
@@ -196,7 +228,8 @@ AlidNdPtAnalysisPbPb::AlidNdPtAnalysisPbPb(Char_t* name, Char_t* title): AlidNdP
     fRecTrackMultHist1[i]=0; 
   }
 
-  Init();
+ // Init();
+ SetCentralityEstimator();
 }
 
 //_____________________________________________________________________________
@@ -253,38 +286,23 @@ AlidNdPtAnalysisPbPb::~AlidNdPtAnalysisPbPb() {
 }
 
 //_____________________________________________________________________________
-void AlidNdPtAnalysisPbPb::Init(){
-  
-  // init centraliy (default: VZERO mult)
-  fCentralityEstimator = "V0M";
-
-  //
-  // Init histograms
-  //
-
-  //const Int_t multNbins = 47;
-  const Int_t multNbins = 1;
-  //const Int_t ptNbinsTrackEventCorr = 37;
-  const Int_t ptNbinsTrackEventCorr = 68;
-  const Int_t ptNbins = 68;
-  const Int_t etaNbins = 30;
-  const Int_t zvNbins = 12;
-  const Int_t centralityBins = 3;
-/*
-  Double_t binsMult[multNbins+1] = {
+void AlidNdPtAnalysisPbPb::Init() {
+  Int_t multNbins = 47;  
+  Int_t ptNbinsTrackEventCorr = 37;  
+  Int_t ptNbins = 68;
+  Int_t etaNbins = 30;
+  Int_t zvNbins = 12;
+  Int_t centralityBins = 11;
+
+  Double_t binsMultDefault[48] = {
                    -0.5, 0.5 , 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5,
                     9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,
                     19.5, 20.5, 30.5, 40.5 , 50.5 , 60.5 , 70.5 , 80.5 , 90.5 , 100.5, 
                    200.5, 300.5, 400.5, 500.5, 600.5, 700.5, 800.5, 900.5, 1000.5, 2000.5, 
                    3000.5, 4000.5, 5000.5, 6000.5, 7000.5, 8000.5, 9000.5, 10000.5 }; // forPbPb
-*/
-  Double_t binsMult[multNbins+1] = {-0.5,  10000.5 }; // forPbPb
-
-
-
-  // Double_t binsPtTrackEventCorr[ptNbinsTrackEventCorr+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,20.0,50.0};
-
-  Double_t binsPtTrackEventCorr[ptNbinsTrackEventCorr+1] = {
+  Double_t binsPtTrackEventCorrDefault[38] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,3.0,4.0,20.0,50.0};
+  Double_t binsPtDefault[69] = {
         0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45,
        0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95,
        1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
@@ -293,25 +311,29 @@ void AlidNdPtAnalysisPbPb::Init(){
        11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0,
        26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0 };
 
-  Double_t binsPt[ptNbins+1] = {
-        0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45,
-       0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95,
-       1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9,
-       2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8,
-       4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0,
-       11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0,
-       26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0 };
-
-  Double_t binsEta[etaNbins+1] = {
+  Double_t binsEtaDefault[31] = {
         -1.5, -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6,
        -0.5, -0.4, -0.3, -0.2, -0.1,  0.0,  0.1,  0.2,  0.3,  0.4, 
         0.5,  0.6,  0.7,  0.8,  0.9,  1.0,  1.1,  1.2,  1.3,  1.4, 
         1.5};
 
-  Double_t binsZv[zvNbins+1] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};
+  Double_t binsZvDefault[13] = {-30.,-25.,-20.,-15.,-10.,-5.,0.,5.,10.,15.,20.,25.,30.};
+  
+  Double_t binsCentralityDefault[12] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.};  
   
-  //Double_t binsCentrality[centralityBins+1] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.};
-  Double_t binsCentrality[centralityBins+1] = {0., 5., 70., 80.};
+  Double_t* binsMult = binsMultDefault;
+  Double_t* binsPtTrackEventCorr = binsPtTrackEventCorrDefault;
+  Double_t* binsPt = binsPtDefault;
+  Double_t* binsEta = binsEtaDefault;
+  Double_t* binsZv = binsZvDefault;
+  Double_t* binsCentrality = binsCentralityDefault;  
+
+  if (fMultNbins > 0) { multNbins = fMultNbins; binsMult = fBinsMult; }
+  if (fPtNbins > 0) { ptNbins  = fPtNbins; binsPt = fBinsPt; }
+  if (fPtCorrNbins > 0) { ptNbinsTrackEventCorr  = fPtCorrNbins; binsPtTrackEventCorr = fBinsPtCorr;  }
+  if (fEtaNbins > 0) { etaNbins  = fEtaNbins; binsEta = fBinsEta; }
+  if (fZvNbins > 0) { zvNbins  = fZvNbins; binsZv = fBinsZv; }
+  if (fCentralityNbins > 0) { centralityBins  = fCentralityNbins; binsCentrality = fBinsCentrality; }
 
   Int_t binsTrackEventCorrMatrix[4]={zvNbins,ptNbinsTrackEventCorr,etaNbins,centralityBins};
   Int_t binsTrackEvent[4]={zvNbins,ptNbins,etaNbins,centralityBins};
@@ -712,11 +734,16 @@ void AlidNdPtAnalysisPbPb::Init(){
   
   // init trigger analysis (for zdc cut)
   fTriggerAnalysis = new AliTriggerAnalysis;
+  
+  // set init flag
+  fIsInit = kTRUE;
 }
 
 //_____________________________________________________________________________
 void AlidNdPtAnalysisPbPb::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent)
 {
+  //  init if not done already
+  if (!fIsInit) { Init(); }
   //
   // Process real and/or simulated events
   //
@@ -747,12 +774,14 @@ void AlidNdPtAnalysisPbPb::Process(AliESDEvent *const esdEvent, AliMCEvent *cons
   // get selection cuts
   AlidNdPtEventCuts *evtCuts = GetEventCuts(); 
   AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); 
+  AlidNdPtAcceptanceCuts *recCuts = GetRecAcceptanceCuts();   
   AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); 
 
   if(!evtCuts || !accCuts  || !esdTrackCuts) {
     AliDebug(AliLog::kError, "cuts not available");
     return;
   }
+  if (0 == recCuts) { recCuts = accCuts;}
 
   // trigger selection
   Bool_t isEventTriggered = kTRUE;
@@ -919,9 +948,8 @@ void AlidNdPtAnalysisPbPb::Process(AliESDEvent *const esdEvent, AliMCEvent *cons
       FillHistograms(track,stack,AlidNdPtHelper::kAllTracks,centralityF); 
       labelsAll[multAll] = TMath::Abs(track->GetLabel());
 
-      multAll++;
-
-      if(esdTrackCuts->AcceptTrack(track) && accCuts->AcceptTrack(track)) {
+      multAll++;      
+      if(esdTrackCuts->AcceptTrack(track) && accCuts->AcceptTrack(track) && recCuts->AcceptTrack(track)) {
 
          fRecTrackHist2[AlidNdPtHelper::kRecTracks]->Fill(values);
          FillHistograms(track,stack,AlidNdPtHelper::kRecTracks,centralityF); 
@@ -1281,6 +1309,9 @@ Long64_t AlidNdPtAnalysisPbPb::Merge(TCollection* const list)
 {
   // Merge list of objects (needed by PROOF)
 
+  //  init if not done already
+  if (!fIsInit) { Init(); }
+
   if (!list)
   return 0;
 
@@ -1371,6 +1402,10 @@ return count;
 //_____________________________________________________________________________
 void AlidNdPtAnalysisPbPb::Analyse() 
 {
+
+  //  init if not done already
+  if (!fIsInit) { Init(); }
+
   // Analyse histograms
   //
   TH1::AddDirectory(kFALSE);
index 618f2856ca363da249b3683b4c5951e9d73d036b..e1c277f53bbab26f901638fb88334db186b6c5fc 100644 (file)
@@ -7,7 +7,7 @@
 // AlidNdPtAnalysisPbPb class used for dNdPt analysis.in PbPb collision 
 // 
 // Author: J.Otwinowski 04/11/2008 
-// changed by M.L.Knichel 2011-03-08
+// last change: 2011-04-04 by M.Knichel
 //------------------------------------------------------------------------------
 
 class iostream;
@@ -60,6 +60,14 @@ public :
     
   // Create folder for analysed histograms
   TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
+  
+  // Set binning for Histograms (if not set default binning is used)
+  void SetBinsMult(Int_t nbins, Double_t* edges) { fMultNbins = nbins; fBinsMult = edges; }
+  void SetBinsPt(Int_t nbins, Double_t* edges) { fPtNbins = nbins; fBinsPt = edges; }
+  void SetBinsPtCorr(Int_t nbins, Double_t* edges) { fPtCorrNbins = nbins; fBinsPtCorr = edges; }
+  void SetBinsEta(Int_t nbins, Double_t* edges) { fEtaNbins = nbins; fBinsEta = edges; }
+  void SetBinsZv(Int_t nbins, Double_t* edges) { fZvNbins = nbins; fBinsZv = edges; }
+  void SetBinsCentrality(Int_t nbins, Double_t* edges) { fCentralityNbins = nbins; fBinsCentrality = edges; }
 
   // Fill histograms
   void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj, Float_t centralityF);
@@ -188,13 +196,29 @@ private:
   THnSparseF *fRecTrackHist3;  //-> nclust:chi2:Pt:Eta:Phi:centrality
 
   AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis object;
+  TString fCentralityEstimator;     // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"
+  
+  //binning for THNsparse
+  Int_t        fMultNbins;
+  Int_t fPtNbins;
+  Int_t fPtCorrNbins;
+  Int_t fEtaNbins;
+  Int_t fZvNbins;
+  Int_t fCentralityNbins;
+  Double_t* fBinsMult;
+  Double_t* fBinsPt;
+  Double_t* fBinsPtCorr;
+  Double_t* fBinsEta;
+  Double_t* fBinsZv;
+  Double_t* fBinsCentrality;
+  
+  Bool_t fIsInit;
+  
 
   AlidNdPtAnalysisPbPb(const AlidNdPtAnalysisPbPb&); // not implemented
-  AlidNdPtAnalysisPbPb& operator=(const AlidNdPtAnalysisPbPb&); // not implemented
-  
-  TString fCentralityEstimator;     // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"
+  AlidNdPtAnalysisPbPb& operator=(const AlidNdPtAnalysisPbPb&); // not implemented  
 
-  ClassDef(AlidNdPtAnalysisPbPb,5);
+  ClassDef(AlidNdPtAnalysisPbPb,6);
 };
 
 #endif
index b8c0188898c9f76c9cab047e4eb98aac32b1b3f8..8829854ace201b0d172a460bc09fb27d6c840162 100644 (file)
@@ -543,7 +543,7 @@ TObjArray* AlidNdPtHelper::GetAllChargedTracks(AliESDEvent *esdEvent, AnalysisMo
     {
       track = AlidNdPtHelper::GetTrackSPDvtx(esdEvent,iTrack,kFALSE);
     }
-    else if(analysisMode == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || analysisMode == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt ||           kITSStandAloneTrackSPDvtx || kITSStandAloneTPCTrackSPDvtx)
+    else if(analysisMode == AlidNdPtHelper::kTPCITSHybridTrackSPDvtx || analysisMode == AlidNdPtHelper::kTPCITSHybridTrackSPDvtxDCArPt || analysisMode == AlidNdPtHelper::kITSStandAloneTrackSPDvtx || analysisMode ==AlidNdPtHelper::kITSStandAloneTPCTrackSPDvtx)
     {
       track = AlidNdPtHelper::GetTrackTrackSPDvtx(esdEvent,iTrack,kFALSE);
     }
index 6acb0859117405ff16ef5aa0a420092a90338cff..f9f5d026da0a49b948b18201add7380feb38997d 100644 (file)
@@ -2,6 +2,11 @@
 
 // this macro creates the track and event cuts used in this analysis
 
+// last modified: 2011-03-28 
+// m.l.knichel@gsi.de
+// added cut modes 200,201: replacing TPCNcluster cut
+
+
 AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, Bool_t hists = kTRUE)
 {
   AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
@@ -537,6 +542,8 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
 
     TString tag = "TPC-only tracking";
   }
+  
+  
 
   // TPC-only (no pt cut, no eta cut)
   if (cutMode == 24) 
@@ -561,6 +568,39 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
 
     TString tag = "TPC-only tracking";
   }
+  
+  // TPC-only (no pt cut, no eta cut) updated 2011
+  if (cutMode == 201) 
+  {
+    // beta cuts (still under investigation)
+    //minNClustersTPC = 50;
+    Float_t minNCrossedRowsTPC = 120; 
+    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8; 
+    Float_t maxFractionSharedTPCCluster = 0.4;    
+    maxChi2PerClusterTPC = 4.0;
+    maxDCAtoVertexXY = 2.4; // cm
+    maxDCAtoVertexZ  = 3.2; // cm
+    minPt=0.0;
+    maxPt=1.e10;
+
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetRequireTPCRefit(kFALSE);
+    esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+    //esdTrackCuts->SetMinNClustersTPC(minNClustersTPC);
+    
+    esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC);
+    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC);
+    esdTrackCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);
+    esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster);
+    
+    esdTrackCuts->SetMaxDCAToVertexXY(maxDCAtoVertexXY);
+    esdTrackCuts->SetMaxDCAToVertexZ(maxDCAtoVertexZ);
+    esdTrackCuts->SetDCAToVertex2D(kTRUE);
+    esdTrackCuts->SetPtRange(minPt,maxPt);
+
+    TString tag = "TPC-only tracking (2011)";
+  }  
+  
 
   //
   // systematic errors DCA cut studies
@@ -1149,6 +1189,7 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
   {
     Int_t    minclsTPC=70;
     Double_t maxchi2perTPCcl=4.;
+    Double_t maxdcazITSTPC=1.e9;
 
     //
     // TPC
@@ -1167,6 +1208,7 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
     //
     esdTrackCuts->SetDCAToVertex2D(kFALSE);
     esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetMaxDCAToVertexZ(maxdcazITSTPC);
 
     // DCArphi parametrization (LHC10c pass2)
     // 7*(0.0026+0.0050/pt^1.01)
@@ -1212,6 +1254,46 @@ AliESDtrackCuts* CreatedNdPtTrackCuts(Int_t cutMode=1, Bool_t fieldOn = kTRUE, B
     TString tag = "TPC+ITS combine tracking + DCAr(pt) (2010)";
   }
 
+  // TPC+ITS combine tracking + DCAr(pt) (2011)
+  if (cutMode == 200) 
+  {
+    //Int_t    minclsTPC=70;
+    Float_t minNCrossedRowsTPC = 120; 
+    Float_t minRatioCrossedRowsOverFindableClustersTPC = 0.8; 
+    Float_t maxFractionSharedTPCCluster = 0.4;
+    Double_t maxchi2perTPCcl=4.;
+    Double_t maxdcazITSTPC=2.0;
+
+    //
+    // TPC
+    //
+    esdTrackCuts->SetRequireTPCRefit(kTRUE);
+    esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+    
+    //esdTrackCuts->SetMinNClustersTPC(minclsTPC);
+    esdTrackCuts->SetMinNCrossedRowsTPC(minNCrossedRowsTPC);
+    esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(minRatioCrossedRowsOverFindableClustersTPC);
+    esdTrackCuts->SetMaxChi2PerClusterTPC(maxchi2perTPCcl);
+    esdTrackCuts->SetMaxFractionSharedTPCClusters(maxFractionSharedTPCCluster);
+    //
+    // ITS
+    //
+    esdTrackCuts->SetRequireITSRefit(kTRUE);
+    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
+    //
+    // primary selection
+    //
+    esdTrackCuts->SetDCAToVertex2D(kFALSE);
+    esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+    esdTrackCuts->SetMaxDCAToVertexZ(maxdcazITSTPC);
+
+    // DCArphi parametrization (LHC10c pass2)
+    // 7*(0.0026+0.0050/pt^1.01)
+    esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
+
+    TString tag = "TPC+ITS combine tracking + DCAr(pt) (2011)";
+  }
+
   // TPC-tracks + SPD point + ITS refit + DCAr(pt) 4-sigma
   if (cutMode == 75) 
   {