]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
added pile up protection
authorssakai <ssakai@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Jul 2013 09:49:45 +0000 (09:49 +0000)
committerssakai <ssakai@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Jul 2013 09:49:45 +0000 (09:49 +0000)
PWGHF/hfe/AliAnalysisTaskFlowTPCEMCalQCSP.cxx
PWGHF/hfe/AliAnalysisTaskFlowTPCEMCalQCSP.h
PWGHF/hfe/macros/AddTaskFlowTPCEMCalQCSP.C

index b3372f53dcc661edbc06b94f6aea6f373fc2c710..c970912c7f81c7ce783f275c3276512f01a2d74f 100644 (file)
@@ -181,6 +181,11 @@ AliAnalysisTaskFlowTPCEMCalQCSP::AliAnalysisTaskFlowTPCEMCalQCSP(const char *nam
 ,fOP_angle(0)
 ,fAssoTPCCluster(0)
 ,fAssoITSRefit(0)
+,fMultCut(0)
+,fMultCorAfterCentrBeforeCuts(0)
+,fMultCorAfterVZTRKComp(0)
+,fCentralityBeforePileup(0)
+,fCentralityAfterVZTRK(0)
 {
     //Named constructor
     
@@ -273,6 +278,11 @@ AliAnalysisTaskFlowTPCEMCalQCSP::AliAnalysisTaskFlowTPCEMCalQCSP()
 ,fOP_angle(0)
 ,fAssoTPCCluster(0)
 ,fAssoITSRefit(0)
+,fMultCut(0)
+,fMultCorAfterCentrBeforeCuts(0)
+,fMultCorAfterVZTRKComp(0)
+,fCentralityBeforePileup(0)
+,fCentralityAfterVZTRK(0)
 {
     //Default constructor
     fPID = new AliHFEpid("hfePid");
@@ -365,16 +375,15 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserExec(Option_t*)
     if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5)return;
     vtxz = trkVtx->GetZ();
     if(TMath::Abs(vtxz)>10)return;
-    fvertex->Fill(vtxz);
     
     // Event cut
     if(!fCFM->CheckEventCuts(AliHFEcuts::kEventStepReconstructed, fAOD)) return;
     if(fNOtrks<2) return;
     
-    Bool_t pass = kFALSE; //to select centrality
+    Bool_t pass = kFALSE; //to select centrality and pile up protection
     CheckCentrality(fAOD,pass);
     if(!pass)return;
-    
+    fvertex->Fill(vtxz);
     
     fNoEvents->Fill(0);
     PlotVZeroMultiplcities(fAOD);
@@ -541,7 +550,7 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserExec(Option_t*)
                 pt,
                 fEovP,
                 fTPCnSigma};
-            fSparseElectronpurity->Fill(valuepurity);
+                fSparseElectronpurity->Fill(valuepurity);
         }
         //----------------------------------------------------------------------------------------------------------
         //----------------------------------------------------------------------------------------------------------
@@ -832,7 +841,7 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserCreateOutputObjects()
     
     fPhotoElecPt = new TH1F("fPhotoElecPt", "photonic electron pt",1000,0,100);
     fOutputList->Add(fPhotoElecPt);
-    //
+    
     fSemiInclElecPt = new TH1F("fSemiInclElecPt", "Semi-inclusive electron pt",1000,0,100);
     fOutputList->Add(fSemiInclElecPt);
     
@@ -854,6 +863,12 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserCreateOutputObjects()
     fCentralityNoPass = new TH1F("fCentralityNoPass", "Centrality No Pass", 101, -1, 100);
     fOutputList->Add(fCentralityNoPass);
     
+    fCentralityBeforePileup = new TH1F("fCentralityBeforePileup", "fCentralityBeforePileup Pass", 101, -1, 100);
+    fOutputList->Add(fCentralityBeforePileup);
+     
+    fCentralityAfterVZTRK = new TH1F("fCentralityAfterVZTRK", "fCentralityAfterVZTRK Pass", 101, -1, 100);
+    fOutputList->Add(fCentralityAfterVZTRK);
+   
     fPhi = new TH1F("fPhi", "#phi distribution", 100, -.5, 7);
     fOutputList->Add(fPhi);
     
@@ -878,6 +893,12 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserCreateOutputObjects()
     fMultCorAfterCuts = new TH2F("fMultCorAfterCuts", "TPC vs Global multiplicity (After cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
     fOutputList->Add(fMultCorAfterCuts);
     
+    fMultCorAfterCentrBeforeCuts = new TH2F("fMultCorAfterCentrBeforeCuts", "TPC vs Global multiplicity (After CC before cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
+    fOutputList->Add(fMultCorAfterCentrBeforeCuts);
+    
+    fMultCorAfterVZTRKComp = new TH2F("fMultCorAfterVZTRKComp", "TPC vs Global multiplicity (After V0-TRK); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
+    fOutputList->Add(fMultCorAfterVZTRKComp);
+    
     fMultvsCentr = new TH2F("fMultvsCentr", "Multiplicity vs centrality; centrality; Multiplicity", 100, 0., 100, 100, 0, 3000);
     fOutputList->Add(fMultvsCentr);
     
@@ -937,7 +958,7 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::UserCreateOutputObjects()
     if(fpurity){
         Int_t binsvpurity[3]={   600,200, 200}; //pt, E/p,TPCnSigma
         Double_t xminvpurity[3]={0,    0, -10};
-        Double_t xmaxvpurity[3]={20,   2,  10};
+        Double_t xmaxvpurity[3]={30,   2,  10};
         fSparseElectronpurity = new THnSparseD("Electronpurity","Electronpurity",3,binsvpurity,xminvpurity,xmaxvpurity);
         fSparseElectronpurity->GetAxis(0)->SetTitle("p_{T} (GeV/c)");
         fSparseElectronpurity->GetAxis(1)->SetTitle("EovP");
@@ -1002,30 +1023,8 @@ Bool_t AliAnalysisTaskFlowTPCEMCalQCSP::ProcessCutStep(Int_t cutStep, AliVPartic
 //_________________________________________
 void AliAnalysisTaskFlowTPCEMCalQCSP::CheckCentrality(AliAODEvent* event, Bool_t &centralitypass)
 {
-    // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set
-    if (!fkCentralityMethod) AliFatal("No centrality method set! FATAL ERROR!");
-    fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethod);
-      cout << "--------------Centrality evaluated-------------------------"<<endl;
-    if ((fCentrality <= fCentralityMin) || (fCentrality > fCentralityMax))
-    {
-        fCentralityNoPass->Fill(fCentrality);
-        //    cout << "--------------Fill no pass-----"<< fCentrality <<"--------------------"<<endl;
-        centralitypass = kFALSE;
-    }else
-    {
-        //    cout << "--------------Fill pass----"<< fCentrality <<"---------------------"<<endl;
-        centralitypass = kTRUE;
-    }
-    //to remove the bias introduced by multeplicity outliers---------------------
-    Float_t centTrk = event->GetCentrality()->GetCentralityPercentile("TRK");
-    Float_t centv0 = event->GetCentrality()->GetCentralityPercentile("V0M");
-    
-    if (TMath::Abs(centv0 - centTrk) > 5.0){
-        centralitypass = kFALSE;
-        fCentralityNoPass->Fill(fCentrality);
-    }
+//============================Multiplicity TPV vs Global===============================================================================      
     const Int_t nGoodTracks = event->GetNumberOfTracks();
-    
     Float_t multTPC(0.); // tpc mult estimate
     Float_t multGlob(0.); // global multiplicity
     for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) { // fill tpc mult
@@ -1045,31 +1044,57 @@ void AliAnalysisTaskFlowTPCEMCalQCSP::CheckCentrality(AliAODEvent* event, Bool_t
         if (!(trackAOD->PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
         if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
         multGlob++;
-    } //track loop
-    //     printf(" mult TPC %.2f, mult Glob %.2f \n", multTPC, multGlob);
-    //   if(! (multTPC > (-40.3+1.22*multGlob) && multTPC < (32.1+1.59*multGlob))){  2010
-     if(fTrigger==1){
-
+    } //track loop 
+       fMultCorBeforeCuts->Fill(multGlob, multTPC);//before all cuts...even before centrality selectrion
+//============================================================================================================================    
+    // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set
+    if (!fkCentralityMethod) AliFatal("No centrality method set! FATAL ERROR!");
+    fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethod);
+   //   cout << "--------------Centrality evaluated-------------------------"<<endl;
+    if ((fCentrality <= fCentralityMin) || (fCentrality > fCentralityMax))
+    {
+        fCentralityNoPass->Fill(fCentrality);
+        //    cout << "--------------Fill no pass-----"<< fCentrality <<"--------------------"<<endl;
+        centralitypass = kFALSE;
+    }else
+    {
+        //    cout << "--------------Fill pass----"<< fCentrality <<"---------------------"<<endl;
+        centralitypass = kTRUE;
+    }
+    if (centralitypass){
+      fMultCorAfterCentrBeforeCuts->Fill(multGlob, multTPC);
+      fCentralityBeforePileup->Fill(fCentrality);
+      }//...after centrality selectrion
+//============================================================================================================================       
+//to remove the bias introduced by multeplicity outliers---------------------
+    Float_t centTrk = event->GetCentrality()->GetCentralityPercentile("TRK");
+    Float_t centv0 = event->GetCentrality()->GetCentralityPercentile("V0M");
+    if (TMath::Abs(centv0 - centTrk) > 5.0){
+        centralitypass = kFALSE;
+        fCentralityNoPass->Fill(fCentrality);
+    }
+    if (centralitypass){
+      fMultCorAfterVZTRKComp->Fill(multGlob, multTPC);
+      fCentralityAfterVZTRK->Fill(fCentrality);
+    }//...after centrality selectrion
+//============================================================================================================================    
+ if(fMultCut){
+    if(fTrigger==1){
     if(! (multTPC > (-36.73 + 1.48*multGlob) && multTPC < (62.87 + 1.78*multGlob))){
      //   cout <<" Trigger ==" <<fTrigger<< endl;
-
         centralitypass = kFALSE;
         fCentralityNoPass->Fill(fCentrality);
     }//2011 Semicentral
      }
     if(fTrigger==0){
-
         if(! (multTPC > (77.6 + 1.399*multGlob) && multTPC < (371.3 + 1.50*multGlob))){
        //     cout <<" Trigger ==" <<fTrigger<< endl;
-
             centralitypass = kFALSE;
             fCentralityNoPass->Fill(fCentrality);
         }//2011
     }//2011 Central
-
-    
-    fMultCorBeforeCuts->Fill(multGlob, multTPC);
-    
+ }
+//=================================All cuts are passed==================++++==================================================    
     if(centralitypass){
         fCentralityPass->Fill(fCentrality);
         fMultCorAfterCuts->Fill(multGlob, multTPC);
index f687ef93dd66bd47ba639b54068b0eb574dca28f..d06358584647a762d861af368720e4956bfb4c99 100644 (file)
@@ -56,6 +56,7 @@ public:
     void                                 SetpTCuttrack(Double_t ptcut) {fpTCut = ptcut;};
     void                                 SetTrigger(Int_t trig) {fTrigger = trig;};
     void                                 SetAssoTPCCluster(Int_t tpc_clust) {fAssoTPCCluster = tpc_clust;};
+    void                                 SetMultCorrelationCut(Bool_t multcut) {fMultCut = multcut;};
     void                                 SetAssoITSRefit(Bool_t itsref) {fAssoITSRefit = itsref;};
     void                                 SetFlowSideBands(Bool_t sidebandsflow){fSideBandsFlow = sidebandsflow;}
     void                                 SelectPhotonicElectronMethod(Bool_t dca){fDCA = dca;}
@@ -152,7 +153,13 @@ private:
     Double_t             fOpeningAngleCut; //openingAngle cut value
     Bool_t               fOP_angle; //to shitch on and off the op_angle cut
     Int_t                fAssoTPCCluster;//asso tpc cluster
-    Bool_t               fAssoITSRefit;//asso its refit
+    Bool_t               fAssoITSRefit;//asso its refit    
+    Bool_t               fMultCut;//for mult correlationcut 
+    TH2F                 *fMultCorAfterCentrBeforeCuts; //! QA profile global and tpc multiplicity after outlier cut
+    TH2F                 *fMultCorAfterVZTRKComp;//!after cent comp
+    TH1F                 *fCentralityBeforePileup;//!cent chneck
+    TH1F                 *fCentralityAfterVZTRK;//!cent chneck2
+
     
     
     AliAnalysisTaskFlowTPCEMCalQCSP(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
index b34d25794243f62dfa1ac38cc9153c24922528d7..5b3e7877ad277d6dba2dca3a06ebe8e98642c1f9 100644 (file)
@@ -19,6 +19,7 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
                                                           Double_t InvmassCut,\r
                                                           Double_t pTCut,\r
                                                           Int_t Trigger,\r
+                                                                                 Bool_t multCorrcut,\r
                                                           Double_t minTPC,\r
                                                           Double_t maxTPC,\r
                                                           Double_t minEovP,\r
@@ -30,7 +31,7 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
                                                           Double_t Dispersion,\r
                                                           Int_t minTPCCluster,\r
                                                           AliHFEextraCuts::ITSPixel_t pixel,\r
-                                                          Bool_t PhotonicElectronDCA = kTRUE,\r
+                                                          Bool_t PhotonicElectronDCA = kFALSE,\r
                                                           Int_t TPCClusterforAsso = 80,\r
                                                           Bool_t AssoITSref = kTRUE,\r
                                                           Bool_t purity = kTRUE,\r
@@ -90,7 +91,7 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
     taskHFE->SetOpeningAngleCut(op_angle_cut);\r
     taskHFE->SetAssoTPCCluster(TPCClusterforAsso);\r
     taskHFE->SetAssoITSRefit(AssoITSref);\r
-    \r
+    taskHFE->SetMultCorrelationCut(multCorrcut);\r
     //set RP cuts for flow package analysis\r
     cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));\r
     if(!cutsRP) {\r