]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
possibility to choose a combination of 3 subevents out of TPC,TPC+,TPC-,V0A,V0C for...
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 10 Apr 2012 21:05:12 +0000 (21:05 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 10 Apr 2012 21:05:12 +0000 (21:05 +0000)
PWGHF/vertexingHF/charmFlow/AliAnalysisTaskSEHFv2.cxx
PWGHF/vertexingHF/charmFlow/AliAnalysisTaskSEHFv2.h

index 86c786582dd38bf05f3a9870383f7d9522f13d25..b0ccfe34e60edf72239b8e7fe885845d0567b63b 100644 (file)
@@ -96,7 +96,8 @@ AliAnalysisTaskSE(),
   fV0EPorder(2),
   fMinCentr(20),
   fMaxCentr(80),
-  fEtaGap(kFALSE)
+  fEtaGap(kFALSE),
+  fSubEvents(0)
 {
   // Default constructor
 }
@@ -120,7 +121,8 @@ AliAnalysisTaskSEHFv2::AliAnalysisTaskSEHFv2(const char *name,AliRDHFCuts *rdCut
   fV0EPorder(2),
   fMinCentr(20),
   fMaxCentr(80),
-  fEtaGap(kFALSE)
+  fEtaGap(kFALSE),
+  fSubEvents(0)
 {
   // standard constructor
   Int_t pdg=421;
@@ -460,58 +462,52 @@ void AliAnalysisTaskSEHFv2::UserExec(Option_t */*option*/)
     if(fUseAfterBurner)fAfterBurner->SetEventPlane((Double_t)eventplane);
   }else{
     if(fEventPlaneMeth!=kTPC){
+
       //VZERO EP and resolution
       rpangleVZERO=GetPhi0Pi(pl->GetEventplane("V0",aod,fV0EPorder));
       if(fEventPlaneMeth>kTPCVZERO){
-       //Using V0A/C for VZERO resolution
-       rpangleeventA= GetPhi0Pi(pl->GetEventplane("V0A",aod,fV0EPorder));
-       rpangleeventB= GetPhi0Pi(pl->GetEventplane("V0C",aod,fV0EPorder));
-       if(fEventPlaneMeth==kVZEROA)rpangleVZERO=rpangleeventA;
-       else if(fEventPlaneMeth==kVZEROC)rpangleVZERO=rpangleeventB;
-       deltaPsi =rpangleeventA-rpangleeventB;
-       eventplane=rpangleVZERO;
+               //Using V0A/C for VZERO resolution
+               if(fEventPlaneMeth==kVZEROA){
+                 rpangleVZERO=GetPhi0Pi(pl->GetEventplane("V0A",aod,fV0EPorder));
+         if(fSubEvents!=kSingleV0Side)rpangleeventB=GetPhi0Pi(pl->GetEventplane("V0C",aod,fV0EPorder));
+               }
+               else if(fEventPlaneMeth==kVZEROC){
+         rpangleVZERO=GetPhi0Pi(pl->GetEventplane("V0C",aod,fV0EPorder));
+         if(fSubEvents!=kSingleV0Side)rpangleeventB=GetPhi0Pi(pl->GetEventplane("V0A",aod,fV0EPorder));
+       }
+               // deltaPsi =rpangleeventA-rpangleeventB;
+               eventplane=rpangleVZERO;
       }
     }
+
     // TPC event plane
     rpangleTPC = pl->GetEventplane("Q");
-    if(fEventPlaneMeth<=kTPCVZERO){
-      // TPC resolution 
-      q = pl->GetQVector();
-      if(fEtaGap){
-       qsub1 = pl->GetQsub1();
-       qsub2 = pl->GetQsub2();
-       if(!qsub1 || !qsub2){
-         fhEventsInfo->Fill(6);
-         return;
-       }
+    if(rpangleTPC<0){
+      fhEventsInfo->Fill(6);
+      return;
+    }
+    rpangleeventA = rpangleTPC;
+    if(fSubEvents>kFullTPC||fEtaGap||fEventPlaneMeth==kVZERO){
+      qsub1 = pl->GetQsub1();
+      qsub2 = pl->GetQsub2();
+      if(!qsub1 || !qsub2){
+       fhEventsInfo->Fill(6);
+       return;
+      }
+      if(fSubEvents==kPosTPC||fSubEvents==kSingleV0Side||fEventPlaneMeth==kVZERO){
        rpangleeventA = qsub1->Phi()/2.;
-       rpangleeventB = qsub2->Phi()/2.;
+       if(fSubEvents==kSingleV0Side||fEventPlaneMeth==kVZERO)rpangleeventB = qsub2->Phi()/2.;
       }
+      if(fSubEvents==kNegTPC)rpangleeventA = qsub2->Phi()/2.;
+    }
+    
+    if(fEventPlaneMeth<=kTPCVZERO){
+      q = pl->GetQVector();
       deltaPsi = pl->GetQsubRes();
-      //       planereso = TMath::Cos(2.*deltaPsi); // reaction plane resolution
+    }else{
+      deltaPsi=eventplane-rpangleeventA;
     }
   }
-
-  //verify TPC EP
-  Double_t rpsubTPC=rpangleTPC;
-  // if(fEventPlaneMeth==kVZEROpos||fEventPlaneMeth==kVZEROneg){
-  //   TVector2 *qsub=0x0;
-  //   if(fEventPlaneMeth==kVZEROneg)qsub=pl->GetQsub2();
-  //   else qsub=pl->GetQsub1();
-  //   if(!qsub){
-  //     fhEventsInfo->Fill(6);
-  //     return;
-  //   }
-  //   if(qsub->X()==0 && qsub->Y()==0){
-  //     fhEventsInfo->Fill(6);
-  //     return;
-  //   }
-  //   rpsubTPC=qsub->Phi()/2.;
-  // }
-  if(rpsubTPC<0){
-    fhEventsInfo->Fill(6);
-    return;
-  }
   
   if(TMath::Abs(deltaPsi)>TMath::Pi()/2.){
     if(deltaPsi>0.) deltaPsi-=TMath::Pi();
@@ -529,13 +525,13 @@ void AliAnalysisTaskSEHFv2::UserExec(Option_t */*option*/)
     ((TH1F*)fOutput->FindObject(Form("hEvPlaneB%s",centrbinname.Data())))->Fill(rpangleeventB); //Angle of second subevent
   }
   if(fEventPlaneMeth>kTPCVZERO){
-    Double_t deltaSub=rpsubTPC-rpangleeventA;
+    Double_t deltaSub=rpangleeventA-rpangleeventB;
     if(TMath::Abs(deltaSub)>TMath::Pi()/2.){// difference of subevents reaction plane angle cannot be bigger than phi/2
       if(deltaSub>0.) deltaSub-=TMath::Pi();
       else deltaSub +=TMath::Pi();
     } 
     ((TH1F*)fOutput->FindObject(Form("hEvPlaneReso2%s",centrbinname.Data())))->Fill(TMath::Cos(2.*deltaSub)); //RP resolution   
-    deltaSub =rpsubTPC-rpangleeventB;
+    deltaSub =eventplane-rpangleeventB;
     if(TMath::Abs(deltaSub)>TMath::Pi()/2.){// difference of subevents reaction plane angle cannot be bigger than phi/2
       if(deltaSub>0.) deltaSub-=TMath::Pi();
       else deltaSub +=TMath::Pi();
index da89823ea8a6088a6ee609954ec7bf4271889dde..9851dc3bcdd2f328d8a834c0dc027c583da47c9c 100644 (file)
@@ -35,6 +35,7 @@ class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
 
   enum DecChannel{kDplustoKpipi,kD0toKpi,kDstartoKpipi}; //more particles can be added
   enum EventPlaneMeth{kTPC,kTPCVZERO,kVZERO,kVZEROA,kVZEROC}; //Event plane to be calculated in the task
+  enum SubEvents{kFullTPC,kPosTPC,kNegTPC,kSingleV0Side}; //Sub-events for V0 EP
 
   AliAnalysisTaskSEHFv2();
   AliAnalysisTaskSEHFv2(const char *name, AliRDHFCuts *rdCuts, Int_t decaychannel);
@@ -58,6 +59,7 @@ class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
   void SetVZEROCEP(){SetEventPlaneMethod(kVZEROC);}
   void SetTPCEP(){SetEventPlaneMethod(kTPCVZERO);}
   void SetEventPlanesCompatibility(Float_t comp) {fEventPlanesComp=comp;}
+  void SetSubEvents(Int_t subev){if(subev>=kFullTPC&&subev<=kSingleV0Side)fSubEvents=subev;}
 
   Int_t GetEventPlaneMethod()const {return fEventPlaneMeth;}
   Float_t GetEventPlanesCompatibility()const {return fEventPlanesComp;}
@@ -105,8 +107,9 @@ class AliAnalysisTaskSEHFv2 : public AliAnalysisTaskSE
   Int_t fMinCentr;              //minimum centrality
   Int_t fMaxCentr;              //maximum centrality
   Bool_t fEtaGap;               // Eta gap feature for Eventplane from tracks; be careful that you do the correct settings in AddTaskEventPlane.C !!!!
+  Int_t fSubEvents;             //Sub-events definition for V0 EP
 
-  ClassDef(AliAnalysisTaskSEHFv2,1); // AliAnalysisTaskSE for the HF v2 analysis
+  ClassDef(AliAnalysisTaskSEHFv2,2); // AliAnalysisTaskSE for the HF v2 analysis
 };
 
 #endif