Removing useless flag.
authorzampolli <chiara.zampolli@cern.ch>
Fri, 15 Aug 2014 08:22:16 +0000 (10:22 +0200)
committerzampolli <chiara.zampolli@cern.ch>
Fri, 15 Aug 2014 08:22:16 +0000 (10:22 +0200)
PWGDQ/dielectron/AliDielectronVarCuts.cxx
PWGDQ/dielectron/AliDielectronVarCuts.h
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPbAOD.cxx
PWGLF/SPECTRA/ChargedHadrons/dNdPt/AlidNdPtAnalysisPbPbAOD.h

index 11df028..66da9bc 100644 (file)
@@ -54,6 +54,7 @@ AliDielectronVarCuts::AliDielectronVarCuts() :
     fCutMin[i]=0;
     fCutMax[i]=0;
     fCutExclude[i]=kFALSE;
+    fBitCut[i]=kFALSE;
     fUpperCut[i]=0x0;
   }
 }
@@ -76,6 +77,7 @@ AliDielectronVarCuts::AliDielectronVarCuts(const char* name, const char* title)
     fCutMin[i]=0;
     fCutMax[i]=0;
     fCutExclude[i]=kFALSE;
+    fBitCut[i]=kFALSE;
     fUpperCut[i]=0x0;
   }
 }
@@ -117,21 +119,32 @@ Bool_t AliDielectronVarCuts::IsSelected(TObject* track)
   for (Int_t iCut=0; iCut<fNActiveCuts; ++iCut){
     Int_t cut=fActiveCuts[iCut];
     SETBIT(fSelectedCutsMask,iCut);
-    if ( !fUpperCut[iCut] && ((values[cut]<fCutMin[iCut]) || (values[cut]>fCutMax[iCut]))^fCutExclude[iCut] ) CLRBIT(fSelectedCutsMask,iCut);
-    else if ( fUpperCut[iCut]) {
-      // use a THnBase inherited cut object
-      Double_t *vals = new Double_t[fUpperCut[iCut]->GetNdimensions()];//={-1};
-      // get array of values for the corresponding dimensions using axis names
-      for(Int_t idim=0; idim<fUpperCut[iCut]->GetNdimensions(); idim++) {
-       vals[idim] = values[AliDielectronVarManager::GetValueType(fUpperCut[iCut]->GetAxis(idim)->GetName())];
-       // printf(" \t %s %.3f ",fUpperCut[iCut]->GetAxis(idim)->GetName(),vals[idim]);
+
+    // apply 'bit cut'
+    if(fBitCut[iCut]) {
+      if ( (TESTBIT((UInt_t)values[cut],(UInt_t)fCutMin[iCut]))^(!fCutExclude[iCut]) )  CLRBIT(fSelectedCutsMask,iCut);
+    }
+    else {
+      // standard var cuts
+      if ( !fUpperCut[iCut] && ((values[cut]<fCutMin[iCut]) || (values[cut]>fCutMax[iCut]))^fCutExclude[iCut] ) {
+       CLRBIT(fSelectedCutsMask,iCut);
+      }
+      else if ( fUpperCut[iCut]) {
+       /// use a THnBase inherited cut object //
+       Double_t *vals = new Double_t[fUpperCut[iCut]->GetNdimensions()];//={-1};
+       // get array of values for the corresponding dimensions using axis names
+       for(Int_t idim=0; idim<fUpperCut[iCut]->GetNdimensions(); idim++) {
+         vals[idim] = values[AliDielectronVarManager::GetValueType(fUpperCut[iCut]->GetAxis(idim)->GetName())];
+         // printf(" \t %s %.3f ",fUpperCut[iCut]->GetAxis(idim)->GetName(),vals[idim]);
+       }
+       // find bin for values (w/o creating it in case it is not filled)
+       Long_t bin = fUpperCut[iCut]->GetBin(vals,kFALSE);
+       Double_t cutMax = (bin>0 ? fUpperCut[iCut]->GetBinContent(bin) : -999. );
+       if ( ((values[cut]<fCutMin[iCut]) || (values[cut]>cutMax))^fCutExclude[iCut] ) CLRBIT(fSelectedCutsMask,iCut);
+       delete [] vals;
       }
-      // find bin for values (w/o creating it in case it is not filled)
-      Long_t bin = fUpperCut[iCut]->GetBin(vals,kFALSE);
-      Double_t cutMax = (bin>0 ? fUpperCut[iCut]->GetBinContent(bin) : -999. );
-      if ( ((values[cut]<fCutMin[iCut]) || (values[cut]>cutMax))^fCutExclude[iCut] ) CLRBIT(fSelectedCutsMask,iCut);
-      delete [] vals;
     }
+    // cut type and decision
     if ( fCutType==kAll && !TESTBIT(fSelectedCutsMask,iCut) ) return kFALSE; // option to (minor) speed improvement
   }
 
@@ -162,6 +175,21 @@ void AliDielectronVarCuts::AddCut(AliDielectronVarManager::ValueTypes type, Doub
 }
 
 //________________________________________________________________________
+void AliDielectronVarCuts::AddBitCut(AliDielectronVarManager::ValueTypes type, UInt_t bit, Bool_t excludeRange)
+{
+  //
+  // Set cut range and activate it
+  //
+  fCutMin[fNActiveCuts]=bit;
+  fCutExclude[fNActiveCuts]=excludeRange;
+  fBitCut[fNActiveCuts]=kTRUE;
+  SETBIT(fActiveCutsMask,fNActiveCuts);
+  fActiveCuts[fNActiveCuts]=(UShort_t)type;
+  fUsedVars->SetBitNumber(type,kTRUE);
+  ++fNActiveCuts;
+}
+
+//________________________________________________________________________
 void AliDielectronVarCuts::AddCut(AliDielectronVarManager::ValueTypes type, Double_t min, THnBase * const max,  Bool_t excludeRange)
 {
   //
@@ -198,13 +226,42 @@ void AliDielectronVarCuts::Print(const Option_t* /*option*/) const
   for (Int_t iCut=0; iCut<fNActiveCuts; ++iCut){
     Int_t cut=(Int_t)fActiveCuts[iCut];
     Bool_t inverse=fCutExclude[iCut];
+    Bool_t bitcut=fBitCut[iCut];
+    Bool_t objcut=fUpperCut[iCut];
 
-    if (!inverse){
-      printf("Cut %02d: %f < %s < %f\n", iCut,
-             fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), fCutMax[iCut]);
-    } else {
-      printf("Cut %02d: !(%f < %s < %f)\n", iCut,
-             fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), fCutMax[iCut]);
+    if(!bitcut && !objcut) {
+      // standard cut
+      if (!inverse){
+       printf("Cut %02d: %f < %s < %f\n", iCut,
+              fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), fCutMax[iCut]);
+      } else {
+       printf("Cut %02d: !(%f < %s < %f)\n", iCut,
+              fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), fCutMax[iCut]);
+      }
     }
-  }
+    else if(bitcut) {
+      // bit cut
+      if (!inverse){
+       printf("Cut %02d: %s & (1ULL<<%d) \n", iCut,
+              AliDielectronVarManager::GetValueName((Int_t)cut), (UInt_t)fCutMin[iCut]);
+      } else {
+       printf("Cut %02d: !(%s & (1ULL<<%d)) \n", iCut,
+              AliDielectronVarManager::GetValueName((Int_t)cut), (UInt_t)fCutMin[iCut]);
+      }
+    }
+    else if(objcut) {
+      // upper cut limit provided by object depending on 'dep'
+      TString dep="";
+      for(Int_t idim=0; idim<fUpperCut[iCut]->GetNdimensions(); idim++)
+       dep+=Form("%s%s",(idim?",":""),fUpperCut[iCut]->GetAxis(idim)->GetName());
+
+      if (!inverse){
+       printf("Cut %02d: %f < %s < obj(%s)\n", iCut,
+              fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), dep.Data());
+      } else {
+       printf("Cut %02d: !(%f < %s < obj(%s))\n", iCut,
+              fCutMin[iCut], AliDielectronVarManager::GetValueName((Int_t)cut), dep.Data());
+      }
+    }
+  } //loop over cuts
 }
index fec4364..9573ac1 100644 (file)
@@ -32,19 +32,20 @@ class AliDielectronVarCuts : public AliAnalysisCuts {
 public:
   // Whether all cut criteria have to be fulfilled of just any
   enum CutType { kAll=0, kAny };
-  
+
   AliDielectronVarCuts();
   AliDielectronVarCuts(const char* name, const char* title);
   virtual ~AliDielectronVarCuts();
   //TODO: make copy constructor and assignment operator public
   void AddCut(AliDielectronVarManager::ValueTypes type, Double_t min, Double_t max, Bool_t excludeRange=kFALSE);
   void AddCut(AliDielectronVarManager::ValueTypes type, Double_t value, Bool_t excludeRange=kFALSE);
+  void AddBitCut(AliDielectronVarManager::ValueTypes type, UInt_t bit, Bool_t excludeRange=kFALSE);
   void AddCut(AliDielectronVarManager::ValueTypes type, Double_t min, THnBase * const max,  Bool_t excludeRange=kFALSE);
-  
+
   // setters
   void    SetCutOnMCtruth(Bool_t mc=kTRUE) { fCutOnMCtruth=mc; }
   void    SetCutType(CutType type)         { fCutType=type;    }
-  
+
   // getters
   Bool_t  GetCutOnMCtruth() const { return fCutOnMCtruth; }
   CutType GetCutType()      const { return fCutType;      }
@@ -56,10 +57,10 @@ public:
   //
   virtual Bool_t IsSelected(TObject* track);
   virtual Bool_t IsSelected(TList*   /* list */ ) {return kFALSE;}
-  
+
 //   virtual Bool_t IsSelected(TObject* track, TObject */*event*/=0);
 //   virtual Long64_t Merge(TCollection* /* list */)      { return 0; }
-  
+
   //
   // Cut information
   //
@@ -67,29 +68,30 @@ public:
 
   virtual void Print(const Option_t* option = "") const;
 
-  
+
  private:
 
   TBits     *fUsedVars;            // list of used variables
   UShort_t  fActiveCuts[AliDielectronVarManager::kNMaxValues];       // list of activated cuts
   UShort_t  fNActiveCuts;                      // number of acive cuts
   UInt_t    fActiveCutsMask;                   // mask of active cuts
-  
+
   UInt_t   fSelectedCutsMask;                 // Maks of selected cuts, is available after calling IsSelected
 
   Bool_t   fCutOnMCtruth;                     // whether to cut on the MC truth of the particle
 
   CutType  fCutType;                          // type of the cut: any, all
-  
+
   Double_t fCutMin[AliDielectronVarManager::kNMaxValues];           // minimum values for the cuts
   Double_t fCutMax[AliDielectronVarManager::kNMaxValues];           // maximum values for the cuts
   Bool_t fCutExclude[AliDielectronVarManager::kNMaxValues];         // inverse cut logic?
-  THnBase  *fUpperCut[AliDielectronVarManager::kNMaxValues];          // use object as upper cut
+  Bool_t fBitCut[AliDielectronVarManager::kNMaxValues];             // bit cut
+  THnBase  *fUpperCut[AliDielectronVarManager::kNMaxValues];        // use object as upper cut
 
   AliDielectronVarCuts(const AliDielectronVarCuts &c);
   AliDielectronVarCuts &operator=(const AliDielectronVarCuts &c);
-  
-  ClassDef(AliDielectronVarCuts,5)         //Cut class providing cuts to all infomation available for the AliVParticle interface
+
+  ClassDef(AliDielectronVarCuts,6)         //Cut class providing cuts to all infomation available for the AliVParticle interface
 };
 
 
index 5105e4a..0c14648 100644 (file)
@@ -71,6 +71,7 @@ fCrossCheckRowsLengthAcc(0),
 fCrossCheckClusterLengthAcc(0),
 fCutSettings(0),
 fEventplaneDist(0),
+fEventplaneRunDist(0),
 fMCEventplaneDist(0),
 fCorrelEventplaneMCDATA(0),
 fCorrelEventplaneDefaultCorrected(0),
@@ -126,6 +127,7 @@ fEtaCheckNbins(0),
 fZvNbins(0),
 fCentralityNbins(0),
 fPhiNbins(0),
+fRunNumberNbins(0),
 fBinsMult(0),
 fBinsPt(0),
 fBinsPtCorr(0),
@@ -134,7 +136,8 @@ fBinsEta(0),
 fBinsEtaCheck(0),
 fBinsZv(0),
 fBinsCentrality(0),
-fBinsPhi(0)
+fBinsPhi(0),
+fBinsRunNumber(0)
 {
   
   for(Int_t i = 0; i < cqMax; i++)
@@ -151,6 +154,8 @@ fBinsPhi(0)
   fEtaCheckNbins = 0;
   fZvNbins = 0;
   fCentralityNbins = 0;
+  fPhiNbins = 0;
+  fRunNumberNbins = 0;
   fBinsMult = 0;
   fBinsPt = 0;
   fBinsPtCorr = 0;
@@ -160,6 +165,7 @@ fBinsPhi(0)
   fBinsZv = 0;
   fBinsCentrality = 0;
   fBinsPhi = 0;
+  fBinsRunNumber = 0;
   
   DefineOutput(1, TList::Class());
 }
@@ -199,6 +205,10 @@ void AlidNdPtAnalysisPbPbAOD::UserCreateOutputObjects()
   Double_t binsPtCheckDefault[20] = {0.,0.15,0.5,1.0,2.0,3.0,4.0, 5.0, 10.0, 13.0, 15.0, 20.0, 25.0, 30.0, 40.0, 50.0, 70.0, 100.0, 150.0, 200.0};  
   Double_t binsEtaCheckDefault[7] = {-1.0,-0.8,-0.4,0.,0.4,0.8,1.0};
   
+  Double_t binsRunNumbers2011[186] = {
+       167693, 167706, 167711, 167712, 167713, 167806, 167807, 167808, 167813, 167814, 167818, 167841, 167842, 167844, 167846, 167902, 167903, 167909, 167915, 167920, 167921, 167985, 167986, 167987, 167988, 168066, 168068, 168069, 168076, 168103, 168104, 168105, 168107, 168108, 168115, 168171, 168172, 168173, 168175, 168177, 168181, 168203, 168204, 168205, 168206, 168207, 168208, 168212, 168213, 168310, 168311, 168318, 168322, 168325, 168341, 168342, 168356, 168361, 168362, 168458, 168460, 168461, 168464, 168467, 168511, 168512, 168514, 168644, 168777, 168826, 168984, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169143, 169144, 169145, 169148, 169156, 169160, 169167, 169236, 169238, 169377, 169382, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169584, 169586, 169587, 169588, 169590, 169591, 169628, 169683, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169914, 169918, 169919, 169920, 169922, 169923, 169924, 169926, 169956, 169961, 169965, 169969, 169975, 169981, 170027, 170036, 170038, 170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170162, 170163, 170193, 170195, 170203, 170204, 170205, 170207, 170208, 170228, 170230, 170264, 170267, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170374, 170387, 170388, 170389, 170390, 170546, 170552, 170556, 170572, 170593, 170593+1 
+  };
+  
   // if no binning is set, use the default
   if (!fBinsMult)      { SetBinsMult(48,binsMultDefault); }
   if (!fBinsPt)                { SetBinsPt(82,binsPtDefault); }
@@ -209,6 +219,7 @@ void AlidNdPtAnalysisPbPbAOD::UserCreateOutputObjects()
   if (!fBinsZv)                { SetBinsZv(7,binsZvDefault); }  
   if (!fBinsCentrality)        { SetBinsCentrality(12,binsCentralityDefault); }
   if (!fBinsPhi)       { SetBinsPhi(37,binsPhiDefault); }
+  if (!fBinsRunNumber) {SetBinsRunNumber(186, binsRunNumbers2011); }
   
   Int_t binsZvPtEtaCent[4]={fZvNbins-1,fPtNbins-1,fEtaNbins-1,fCentralityNbins-1};
   Int_t binsPhiPtEtaCent[4]={fPhiNbins-1,fPtNbins-1,fEtaNbins-1,fCentralityNbins-1};
@@ -529,10 +540,15 @@ void AlidNdPtAnalysisPbPbAOD::UserCreateOutputObjects()
   fCutSettings->GetYaxis()->SetTitle("cut value");
   fCutSettings->SetBit(TH1::kCanRebin);
   
-  fEventplaneDist = new TH1F("fEventplaneDist","fEventplaneDist",20, -1.*TMath::Pi(), TMath::Pi());
+  fEventplaneDist = new TH1F("fEventplaneDist","fEventplaneDist",200, -1./2.*TMath::Pi(), 1./2.*TMath::Pi());
   fEventplaneDist->GetXaxis()->SetTitle("#phi (event plane)");
   fEventplaneDist->Sumw2();
   
+  fEventplaneRunDist = new TH2F("fEventplaneRunDist","fEventplaneRunDist",200, -1./2.*TMath::Pi(), 1./2.*TMath::Pi(),fRunNumberNbins-1, fBinsRunNumber );
+  fEventplaneRunDist->GetXaxis()->SetTitle("#phi (event plane)");
+  fEventplaneRunDist->GetYaxis()->SetTitle("runnumber");
+  fEventplaneRunDist->Sumw2();
+  
   fMCEventplaneDist = new TH1F("fMCEventplaneDist","fMCEventplaneDist",20, -1.*TMath::Pi(), TMath::Pi());
   fMCEventplaneDist->GetXaxis()->SetTitle("#phi (MC event plane)");
   fMCEventplaneDist->Sumw2();
@@ -627,6 +643,7 @@ void AlidNdPtAnalysisPbPbAOD::UserCreateOutputObjects()
   fOutputList->Add(fCrossCheckClusterLengthAcc);
   fOutputList->Add(fCutSettings);
   fOutputList->Add(fEventplaneDist);
+  fOutputList->Add(fEventplaneRunDist);
   fOutputList->Add(fMCEventplaneDist);
   fOutputList->Add(fCorrelEventplaneMCDATA);
   fOutputList->Add(fCorrelEventplaneDefaultCorrected);
@@ -803,6 +820,7 @@ void AlidNdPtAnalysisPbPbAOD::UserExec(Option_t *option)
   
   //   cout << dEventplaneAngle << endl;
   fEventplaneDist->Fill(dEventplaneAngle);
+  fEventplaneRunDist->Fill(dEventplaneAngle, (Double_t)eventAOD->GetRunNumber());
   
   // fill crosscheck histos
   fEPDistCent->Fill(dEventplaneAngle, dCentrality);
index e6c2534..ef6f8f7 100644 (file)
@@ -75,6 +75,7 @@ class AlidNdPtAnalysisPbPbAOD : public AliAnalysisTaskSE {
     void SetBinsZv(Int_t nbins, Double_t* edges)                       { Printf("[I] Setting Zv Bins"); fZvNbins = nbins; fBinsZv= GetArrayClone(nbins,edges); }
     void SetBinsCentrality(Int_t nbins, Double_t* edges)       { Printf("[I] Setting Cent Bins"); fCentralityNbins = nbins; fBinsCentrality = GetArrayClone(nbins,edges); }
     void SetBinsPhi(Int_t nbins, Double_t* edges)                      { Printf("[I] Setting Phi Bins"); fPhiNbins = nbins; fBinsPhi = GetArrayClone(nbins,edges); }
+    void SetBinsRunNumber(Int_t nbins, Double_t* edges)        { Printf("[I] Setting RunNumber Bins"); fRunNumberNbins = nbins; fBinsRunNumber = GetArrayClone(nbins,edges); }
     
     // set event cut variables
     void SetCutMaxZVertex( Double_t d)                                     { fCutMaxZVertex = d; }
@@ -213,6 +214,7 @@ class AlidNdPtAnalysisPbPbAOD : public AliAnalysisTaskSE {
     TH1F        *fCutSettings; // control histo: cut settings
     
     TH1F               *fEventplaneDist; // event plane distribution in phi
+    TH2F               *fEventplaneRunDist; // event plane distribution in phi
     TH1F               *fMCEventplaneDist; // MC event plane distribution in phi
     TH2F               *fCorrelEventplaneMCDATA; // correlation between data and MC eventplane
     THnSparseF *fCorrelEventplaneDefaultCorrected; // correlation between default and corrected (== subtraction of current track) eventplane
@@ -275,6 +277,7 @@ class AlidNdPtAnalysisPbPbAOD : public AliAnalysisTaskSE {
     Int_t       fZvNbins;
     Int_t       fCentralityNbins;
     Int_t       fPhiNbins;
+       Int_t           fRunNumberNbins;
     Double_t*   fBinsMult; //[fMultNbins]
     Double_t*   fBinsPt; //[fPtNbins]
     Double_t*   fBinsPtCorr; //[fPtCorrNbins]
@@ -284,11 +287,12 @@ class AlidNdPtAnalysisPbPbAOD : public AliAnalysisTaskSE {
     Double_t*   fBinsZv; //[fZvNbins]
     Double_t*   fBinsCentrality; //[fCentralityNbins]
     Double_t*   fBinsPhi; //[fPhiNbins]
+    Double_t*  fBinsRunNumber; //[fRunNumberNbins]
     
     AlidNdPtAnalysisPbPbAOD(const AlidNdPtAnalysisPbPbAOD&); // not implemented
     AlidNdPtAnalysisPbPbAOD& operator=(const AlidNdPtAnalysisPbPbAOD&); // not implemented  
     
-    ClassDef(AlidNdPtAnalysisPbPbAOD,9); // has to be at least 1, otherwise not streamable...
+    ClassDef(AlidNdPtAnalysisPbPbAOD,10); // has to be at least 1, otherwise not streamable...
 };
 
 #endif