]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/macros/AddTaskFlowTPCEMCalQCSP.C
extended pT range of histograms
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / AddTaskFlowTPCEMCalQCSP.C
index 14de42d0d4e9bb52729c2aa4d75ae219552a4557..b34d25794243f62dfa1ac38cc9153c24922528d7 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////\r
-//                                                               //            \r
-// AddTaskFlowTPCEMCalQCSP macro                                     //\r
+//                                                               //\r
+// AddTaskFlowTPCEMCalQCSP macro                                 //\r
 // Author: Andrea Dubla, Utrecht University, 2012                //\r
 //                                                               //\r
 ///////////////////////////////////////////////////////////////////\r
@@ -13,46 +13,46 @@ class AliAnalysisDataContainer;
 class AliHFEextraCuts;\r
 \r
 AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(\r
-                                              TString uniqueID = "",\r
-                                              Float_t centrMin ,\r
-                                              Float_t centrMax ,\r
-                                              Double_t InvmassCut,\r
-                                              Double_t pTCut,\r
-                                              Int_t Trigger,\r
-                                              Double_t minTPC,\r
-                                              Double_t maxTPC,\r
-                                              Double_t minEovP,\r
-                                              Double_t maxEovP,\r
-                                              Double_t minM20,\r
-                                              Double_t maxM20,\r
-                                              Double_t minM02,\r
-                                              Double_t maxM02,\r
-                                              Double_t Dispersion,\r
-                                              Int_t minTPCCluster,\r
-                                              AliHFEextraCuts::ITSPixel_t pixel,\r
-                                              Bool_t PhotonicElectronDCA = kTRUE,\r
-                                              Int_t TPCClusterforAsso,\r
-                                              Bool_t AssoITSref = kTRUE,\r
-                                              Bool_t purity = kTRUE,\r
-                                              Bool_t SideBandsFlow = kFALSE,\r
-                                              Bool_t Phi_minus_psi = kFALSE,\r
-                                              const char *Cent = "V0M",\r
-                                              Bool_t QC = kTRUE, // use qc2 and qc4\r
-                                              Bool_t SP_TPC = kTRUE, //use tpc sp method\r
-                                              Bool_t VZERO_SP = kFALSE, // use vzero sp method\r
-                                              Int_t harmonic = 2,\r
-                                              Bool_t shrinkSP = kTRUE,\r
-                                              Bool_t debug = kFALSE,\r
-                                              Int_t RPFilterBit = 1,\r
-                                              Bool_t op_ang = kFALSE,\r
-                                              Double_t op_angle_cut=3.\r
-                                              )\r
+                                                          TString uniqueID = "",\r
+                                                          Float_t centrMin ,\r
+                                                          Float_t centrMax ,\r
+                                                          Double_t InvmassCut,\r
+                                                          Double_t pTCut,\r
+                                                          Int_t Trigger,\r
+                                                          Double_t minTPC,\r
+                                                          Double_t maxTPC,\r
+                                                          Double_t minEovP,\r
+                                                          Double_t maxEovP,\r
+                                                          Double_t minM20,\r
+                                                          Double_t maxM20,\r
+                                                          Double_t minM02,\r
+                                                          Double_t maxM02,\r
+                                                          Double_t Dispersion,\r
+                                                          Int_t minTPCCluster,\r
+                                                          AliHFEextraCuts::ITSPixel_t pixel,\r
+                                                          Bool_t PhotonicElectronDCA = kTRUE,\r
+                                                          Int_t TPCClusterforAsso = 80,\r
+                                                          Bool_t AssoITSref = kTRUE,\r
+                                                          Bool_t purity = kTRUE,\r
+                                                          Bool_t SideBandsFlow = kFALSE,\r
+                                                          Bool_t Phi_minus_psi = kFALSE,\r
+                                                          const char *Cent = "V0M",\r
+                                                          Bool_t QC = kTRUE, // use qc2 and qc4\r
+                                                          Bool_t SP_TPC = kTRUE, //use tpc sp method\r
+                                                          Bool_t VZERO_SP = kFALSE, // use vzero sp method\r
+                                                          Int_t harmonic = 2,\r
+                                                          Bool_t shrinkSP = kTRUE,\r
+                                                          Bool_t debug = kFALSE,\r
+                                                          Int_t RPFilterBit = 1,\r
+                                                          Bool_t op_ang = kFALSE,\r
+                                                          Double_t op_angle_cut=3.\r
+                                                          )\r
 \r
 {\r
-\r
-\r
-\r
-    if(debug) cout << " === Adding Task ElectFlow === " << endl;    \r
+    \r
+    \r
+    \r
+    if(debug) cout << " === Adding Task ElectFlow === " << endl;\r
     TString fileName = AliAnalysisManager::GetCommonFileName();\r
     fileName += ":ElectroID_";\r
     fileName += uniqueID;\r
@@ -66,38 +66,38 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
         if(debug) cout << " Fatal error: no imput event handler found!" << endl;\r
         return 0x0;\r
     }\r
-\r
-//create a task\r
-  AliAnalysisTaskFlowTPCEMCalQCSP *taskHFE = ConfigHFEemcalMod(kFALSE, minTPCCluster, pixel);    //kTRUE if MC\r
     \r
-  if(debug) cout << " === AliAnalysisElectronFlow === " << taskHFE << endl;\r
-  if(!taskHFE) {\r
+    //create a task\r
+    AliAnalysisTaskFlowTPCEMCalQCSP *taskHFE = ConfigHFEemcalMod(kFALSE, minTPCCluster, pixel);    //kTRUE if MC\r
+    \r
+    if(debug) cout << " === AliAnalysisElectronFlow === " << taskHFE << endl;\r
+    if(!taskHFE) {\r
         if(debug) cout << " --> Unexpected error occurred: NO TASK WAS CREATED! (could be a library problem!) " << endl;\r
         return 0x0;\r
     }\r
     \r
-// Set centrality percentiles and method V0M, FMD, TRK, TKL, CL0, CL1, V0MvsFMD, TKLvsV0M, ZEMvsZDC\r
-  taskHFE->SetCentralityParameters(centrMin, centrMax, Cent);\r
-  taskHFE->SetInvariantMassCut(InvmassCut);\r
-  taskHFE->SetTrigger(Trigger);\r
-  taskHFE->SetIDCuts(minTPC, maxTPC, minEovP, maxEovP, minM20, maxM20, minM02, maxM02, Dispersion);\r
-  taskHFE->SetFlowSideBands(SideBandsFlow);\r
-  taskHFE->Setphiminuspsi(Phi_minus_psi);\r
-  taskHFE->SetPurity(purity);\r
-  taskHFE->SetpTCuttrack(pTCut);\r
-  taskHFE->SelectPhotonicElectronMethod(PhotonicElectronDCA);\r
-  taskHFE->SetOpeningAngleflag(op_ang);\r
-  taskHFE->SetOpeningAngleCut(op_angle_cut);\r
-  taskHFE->SetAssoTPCCluster(TPCClusterforAsso);\r
-  taskHFE->SetAssoITSRefit(AssoITSref);\r
-    \r
-//set RP cuts for flow package analysis\r
-  cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));\r
+    // Set centrality percentiles and method V0M, FMD, TRK, TKL, CL0, CL1, V0MvsFMD, TKLvsV0M, ZEMvsZDC\r
+    taskHFE->SetCentralityParameters(centrMin, centrMax, Cent);\r
+    taskHFE->SetInvariantMassCut(InvmassCut);\r
+    taskHFE->SetTrigger(Trigger);\r
+    taskHFE->SetIDCuts(minTPC, maxTPC, minEovP, maxEovP, minM20, maxM20, minM02, maxM02, Dispersion);\r
+    taskHFE->SetFlowSideBands(SideBandsFlow);\r
+    taskHFE->Setphiminuspsi(Phi_minus_psi);\r
+    taskHFE->SetPurity(purity);\r
+    taskHFE->SetpTCuttrack(pTCut);\r
+    taskHFE->SelectPhotonicElectronMethod(PhotonicElectronDCA);\r
+    taskHFE->SetOpeningAngleflag(op_ang);\r
+    taskHFE->SetOpeningAngleCut(op_angle_cut);\r
+    taskHFE->SetAssoTPCCluster(TPCClusterforAsso);\r
+    taskHFE->SetAssoITSRefit(AssoITSref);\r
+    \r
+    //set RP cuts for flow package analysis\r
+    cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));\r
     if(!cutsRP) {\r
         if(debug) cout << " Fatal error: no RP cuts found, could be a library problem! " << endl;\r
         return 0x0;\r
     }\r
-\r
+    \r
     if(!VZERO_SP) {\r
         AliFlowTrackCuts::trackParameterType rptype = AliFlowTrackCuts::kGlobal;\r
         cutsRP->SetParamType(rptype);\r
@@ -120,81 +120,81 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
         QC = kFALSE;\r
         if(debug) cout << "    --> VZERO RP's " << cutsRP << endl;\r
     }\r
-\r
+    \r
     AliFlowTrackSimpleCuts *POIfilterLeft = new AliFlowTrackSimpleCuts();\r
     AliFlowTrackSimpleCuts *POIfilterRight = new AliFlowTrackSimpleCuts();\r
-    if(SP_TPC){\r
+    if(VZERO_SP || SP_TPC){\r
         POIfilterLeft->SetEtaMin(-0.7);\r
         POIfilterLeft->SetEtaMax(0.0);\r
         POIfilterLeft->SetMassMin(263731); POIfilterLeft->SetMassMax(263733);\r
-\r
+        \r
         POIfilterRight->SetEtaMin(0.0);\r
         POIfilterRight->SetEtaMax(0.7);\r
         POIfilterRight->SetMassMin(263731); POIfilterRight->SetMassMax(263733);\r
     }\r
-\r
     \r
-    AliFlowTrackSimpleCuts *POIfilterVZERO = new AliFlowTrackSimpleCuts();\r
-    if(VZERO_SP || QC){\r
-        POIfilterVZERO->SetEtaMin(-0.7);\r
-        POIfilterVZERO->SetEtaMax(0.7);\r
-        POIfilterVZERO->SetMassMin(263731); POIfilterVZERO->SetMassMax(263733);\r
\r
+    \r
+    AliFlowTrackSimpleCuts *POIfilterQC = new AliFlowTrackSimpleCuts();\r
+    if(QC){\r
+        POIfilterQC->SetEtaMin(-0.7);\r
+        POIfilterQC->SetEtaMax(0.7);\r
+        POIfilterQC->SetMassMin(263731); POIfilterQC->SetMassMax(263733);\r
+        \r
     }\r
\r
+    \r
     if(SideBandsFlow){\r
-\r
-    AliFlowTrackSimpleCuts *POIfilterLeftH = new AliFlowTrackSimpleCuts();\r
-    AliFlowTrackSimpleCuts *POIfilterRightH = new AliFlowTrackSimpleCuts();\r
-    if(SP_TPC){\r
-        POIfilterLeftH->SetEtaMin(-0.7);\r
-        POIfilterLeftH->SetEtaMax(0.0);\r
-        POIfilterLeftH->SetMassMin(2636); POIfilterLeftH->SetMassMax(2638);\r
         \r
-        POIfilterRightH->SetEtaMin(0.0);\r
-        POIfilterRightH->SetEtaMax(0.7);\r
-        POIfilterRightH->SetMassMin(2636); POIfilterRightH->SetMassMax(2638);\r
+        AliFlowTrackSimpleCuts *POIfilterLeftH = new AliFlowTrackSimpleCuts();\r
+        AliFlowTrackSimpleCuts *POIfilterRightH = new AliFlowTrackSimpleCuts();\r
+        if(SP_TPC){\r
+            POIfilterLeftH->SetEtaMin(-0.7);\r
+            POIfilterLeftH->SetEtaMax(0.0);\r
+            POIfilterLeftH->SetMassMin(2636); POIfilterLeftH->SetMassMax(2638);\r
+            \r
+            POIfilterRightH->SetEtaMin(0.0);\r
+            POIfilterRightH->SetEtaMax(0.7);\r
+            POIfilterRightH->SetMassMin(2636); POIfilterRightH->SetMassMax(2638);\r
+        }\r
+        \r
+        \r
+        AliFlowTrackSimpleCuts *POIfilterQCH = new AliFlowTrackSimpleCuts();\r
+        if(QC){\r
+            POIfilterQCH->SetEtaMin(-0.7);\r
+            POIfilterQCH->SetEtaMax(0.7);\r
+            POIfilterQCH->SetMassMin(2636); POIfilterQCH->SetMassMax(2638);\r
+            \r
+        }\r
+        \r
     }\r
     \r
+    taskHFE->SetRPCuts(cutsRP);\r
     \r
-    AliFlowTrackSimpleCuts *POIfilterVZEROH = new AliFlowTrackSimpleCuts();\r
-    if(VZERO_SP || QC){\r
-        POIfilterVZEROH->SetEtaMin(-0.7);\r
-        POIfilterVZEROH->SetEtaMax(0.7);\r
-        POIfilterVZEROH->SetMassMin(2636); POIfilterVZEROH->SetMassMax(2638);\r
-        \r
-    }\r
     \r
-    }\r
+    AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("ccontainer0_%s",uniqueID.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,fileName);\r
+    \r
+    mgr->ConnectInput(taskHFE,0,mgr->GetCommonInputContainer());\r
+    mgr->ConnectOutput(taskHFE,1,coutput3);\r
+    \r
     \r
-    taskHFE->SetRPCuts(cutsRP);\r
\r
\r
- AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("ccontainer0_%s",uniqueID.Data()),TList::Class(),AliAnalysisManager::kOutputContainer,fileName);\r
-  \r
- mgr->ConnectInput(taskHFE,0,mgr->GetCommonInputContainer());\r
- mgr->ConnectOutput(taskHFE,1,coutput3);\r
-    \r
\r
     if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;\r
     AliAnalysisDataContainer *flowEvent = mgr->CreateContainer(Form("FlowContainer_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);\r
     mgr->ConnectOutput(taskHFE, 2, flowEvent);\r
-    if(debug) cout << "    --> Created IO containers " << flowEvent << endl;   \r
+    if(debug) cout << "    --> Created IO containers " << flowEvent << endl;\r
     \r
-    if(SideBandsFlow){   \r
-    if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;\r
-    AliAnalysisDataContainer *flowEventCont = mgr->CreateContainer(Form("FlowContainer_Cont_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);\r
-    mgr->ConnectOutput(taskHFE, 3, flowEventCont);\r
-    if(debug) cout << "    --> Created IO containers " << flowEventCont << endl;\r
+    if(SideBandsFlow){\r
+        if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;\r
+        AliAnalysisDataContainer *flowEventCont = mgr->CreateContainer(Form("FlowContainer_Cont_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);\r
+        mgr->ConnectOutput(taskHFE, 3, flowEventCont);\r
+        if(debug) cout << "    --> Created IO containers " << flowEventCont << endl;\r
     }\r
     \r
     \r
-  mgr->AddTask(taskHFE);\r
+    mgr->AddTask(taskHFE);\r
     \r
     if (QC) {  // add qc tasks\r
-        AddQCmethod(Form("QCTPCin_%s",uniqueID.Data()), harmonic, flowEvent,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterVZERO);\r
+        AddQCmethod(Form("QCTPCin_%s",uniqueID.Data()), harmonic, flowEvent,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterQC);\r
         if(debug) cout << "    --> Hanging QC task ...succes! "<< endl;\r
-    }   \r
+    }\r
     if (SP_TPC) {  // add sp subevent tasks\r
         AddSPmethod(Form("SPTPCQa_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEvent, false, shrinkSP, debug,uniqueID, false, POIfilterRight);\r
         if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;\r
@@ -202,30 +202,30 @@ AliAnalysisTaskFlowTPCEMCalQCSP*  AddTaskFlowTPCEMCalQCSP(
         if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;\r
     }\r
     if (VZERO_SP) {  // add sp subevent tasks\r
-        AddSPmethod(Form("SPVZEROQa_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEvent, false, shrinkSP, debug,uniqueID, true, POIfilterVZERO);\r
+        AddSPmethod(Form("SPVZEROQa_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEvent, false, shrinkSP, debug,uniqueID, true, POIfilterRight);\r
         if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;\r
-        AddSPmethod(Form("SPVZEROQb_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEvent,  false, shrinkSP, debug,uniqueID, true, POIfilterVZERO);\r
+        AddSPmethod(Form("SPVZEROQb_in_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEvent,  false, shrinkSP, debug,uniqueID, true, POIfilterLeft);\r
         if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;\r
     }\r
-\r
+    \r
     //=========================================Flow event for elctronContamination==============================================================================================\r
     if(SideBandsFlow){\r
-    if (QC) {  // add qc tasks\r
-        AddQCmethod(Form("QCTPCCont_%s",uniqueID.Data()), harmonic, flowEventCont,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterVZEROH);\r
-        if(debug) cout << "    --> Hanging QC task ...succes! "<< endl;\r
-    }\r
-    if (SP_TPC) {  // add sp subevent tasks\r
-        AddSPmethod(Form("SPTPCQa_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEventCont, false, shrinkSP, debug,uniqueID, false, POIfilterRightH);\r
-        if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;\r
-        AddSPmethod(Form("SPTPCQb_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEventCont,  false, shrinkSP, debug,uniqueID, false, POIfilterLeftH);\r
-        if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;\r
-    }\r
+        if (QC) {  // add qc tasks\r
+            AddQCmethod(Form("QCTPCCont_%s",uniqueID.Data()), harmonic, flowEventCont,  debug ,uniqueID, -0.7, -0.0, 0.0, 0.7,false,POIfilterQCH);\r
+            if(debug) cout << "    --> Hanging QC task ...succes! "<< endl;\r
+        }\r
+        if (SP_TPC) {  // add sp subevent tasks\r
+            AddSPmethod(Form("SPTPCQa_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qa", harmonic, flowEventCont, false, shrinkSP, debug,uniqueID, false, POIfilterRightH);\r
+            if(debug) cout << "    --> Hanging SP Qa task ... succes!" << endl;\r
+            AddSPmethod(Form("SPTPCQb_Cont_%s", uniqueID.Data()), -0.7, -.0, .0, +0.7, "Qb", harmonic, flowEventCont,  false, shrinkSP, debug,uniqueID, false, POIfilterLeftH);\r
+            if(debug) cout << "    --> Hanging SP Qb task ... succes!"<< endl;\r
+        }\r
     }\r
     //==========================================================================================================================================================================\r
     \r
     \r
-return taskHFE;\r
-\r
+    return taskHFE;\r
+    \r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -233,75 +233,75 @@ return taskHFE;
 \r
 //_____________________________________________________________________________\r
 void AddSPmethod(char *name, double minEtaA, double maxEtaA, double minEtaB, double maxEtaB, char *Qvector, int harmonic, AliAnalysisDataContainer *flowEvent, bool bEP, bool shrink = false, bool debug, TString uniqueID,Bool_t VZERO_SP = kFALSE,  AliFlowTrackSimpleCuts* POIfilter)\r
-        {\r
-            // add sp task and invm filter tasks\r
-            if(debug) (bEP) ? cout << " ****** Reveived request for EP task ****** " << endl : cout << " ******* Switching to SP task ******* " << endl;\r
-            TString fileName = AliAnalysisManager::GetCommonFileName();\r
-            (bEP) ? fileName+=":EP" : fileName+=":SP";\r
-  //          if(etagap) {\r
+{\r
+    // add sp task and invm filter tasks\r
+    if(debug) (bEP) ? cout << " ****** Reveived request for EP task ****** " << endl : cout << " ******* Switching to SP task ******* " << endl;\r
+    TString fileName = AliAnalysisManager::GetCommonFileName();\r
+    (bEP) ? fileName+=":EP" : fileName+=":SP";\r
+    //          if(etagap) {\r
     //            fileName+="_SUBEVENTS";\r
-      //          if(debug) cout << "    --> Setting up subevent analysis <-- " << endl;\r
-        //    }\r
-            if(debug) cout << "    --> fileName " << fileName << endl;\r
-            TString myFolder = fileName;\r
-            if(debug) cout << "    --> myFolder " << myFolder << endl;\r
-            TString myNameSP;\r
-            (bEP) ? myNameSP = Form("%sEPv%d%s", name, harmonic, Qvector): myNameSP = Form("%sSPv%d%s", name, harmonic, Qvector);\r
-            if(debug) cout << " myNameSP " << myNameSP << endl;\r
-            AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-            AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s",myNameSP.Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);\r
-            AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myNameSP.Data()), NULL, POIfilter);\r
-            tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);\r
-            if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);\r
-            mgr->AddTask(tskFilter);\r
-            mgr->ConnectInput(tskFilter, 0, flowEvent);\r
-            mgr->ConnectOutput(tskFilter, 1, flowEventOut);\r
-            AliAnalysisDataContainer *outSP = mgr->CreateContainer(myNameSP.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);\r
-            AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", myNameSP.Data()), kFALSE);\r
-            tskSP->SetApplyCorrectionForNUA(kTRUE);\r
-            tskSP->SetHarmonic(harmonic);\r
-            tskSP->SetTotalQvector(Qvector);\r
-            if (bEP) tskSP->SetBehaveAsEP();\r
-            if (shrink) tskSP->SetBookOnlyBasicCCH(kTRUE);\r
-            mgr->AddTask(tskSP);\r
-            mgr->ConnectInput(tskSP, 0, flowEventOut);\r
-            mgr->ConnectOutput(tskSP, 1, outSP);\r
-        }\r
+    //          if(debug) cout << "    --> Setting up subevent analysis <-- " << endl;\r
+    //    }\r
+    if(debug) cout << "    --> fileName " << fileName << endl;\r
+    TString myFolder = fileName;\r
+    if(debug) cout << "    --> myFolder " << myFolder << endl;\r
+    TString myNameSP;\r
+    (bEP) ? myNameSP = Form("%sEPv%d%s", name, harmonic, Qvector): myNameSP = Form("%sSPv%d%s", name, harmonic, Qvector);\r
+    if(debug) cout << " myNameSP " << myNameSP << endl;\r
+    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+    AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s",myNameSP.Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);\r
+    AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myNameSP.Data()), NULL, POIfilter);\r
+    tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);\r
+    if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);\r
+    mgr->AddTask(tskFilter);\r
+    mgr->ConnectInput(tskFilter, 0, flowEvent);\r
+    mgr->ConnectOutput(tskFilter, 1, flowEventOut);\r
+    AliAnalysisDataContainer *outSP = mgr->CreateContainer(myNameSP.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);\r
+    AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", myNameSP.Data()), kFALSE);\r
+    tskSP->SetApplyCorrectionForNUA(kTRUE);\r
+    tskSP->SetHarmonic(harmonic);\r
+    tskSP->SetTotalQvector(Qvector);\r
+    if (bEP) tskSP->SetBehaveAsEP();\r
+    if (shrink) tskSP->SetBookOnlyBasicCCH(kTRUE);\r
+    mgr->AddTask(tskSP);\r
+    mgr->ConnectInput(tskSP, 0, flowEventOut);\r
+    mgr->ConnectOutput(tskSP, 1, outSP);\r
+}\r
 //_____________________________________________________________________________\r
 void AddQCmethod(char *name, int harmonic, AliAnalysisDataContainer *flowEvent, Bool_t debug, TString uniqueID,double minEtaA, double maxEtaA, double minEtaB, double maxEtaB,Bool_t VZERO_SP = kFALSE,  AliFlowTrackSimpleCuts* POIfilter)\r
-        {\r
-            // add qc task and invm filter tasks\r
-            if(debug) cout << " ****** Received request for QC v" << harmonic << " task " << name << ", IO ****** " << flowEvent << endl;\r
-            TString fileName = AliAnalysisManager::GetCommonFileName();\r
-            fileName+=":QC";\r
-            if(debug) cout << "    --> Common filename: " << fileName << endl;\r
-            TString myFolder = Form("v%d", harmonic);\r
-            if(debug) cout << "    --> myFolder: " << myFolder << endl;\r
-            TString myName = Form("%s", name);\r
-            if(debug) cout << "    --> myName: " << myName << endl;\r
-            AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-            AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s", myName.Data()), AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);\r
-            AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myName.Data()), NULL, POIfilter);\r
-            tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);\r
-        //    if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);\r
-            mgr->AddTask(tskFilter);\r
-            mgr->ConnectInput(tskFilter, 0, flowEvent);\r
-            mgr->ConnectOutput(tskFilter, 1, flowEventOut);\r
-            \r
-            AliAnalysisDataContainer *outQC = mgr->CreateContainer(myName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);\r
-            AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s", myName.Data()), kFALSE);\r
-            tskQC->SetApplyCorrectionForNUA(kTRUE);\r
-            tskQC->SetHarmonic(harmonic);\r
-            tskQC->SetBookOnlyBasicCCH(kTRUE);\r
-            mgr->AddTask(tskQC);\r
-            mgr->ConnectInput(tskQC, 0, flowEventOut);\r
-            mgr->ConnectOutput(tskQC, 1, outQC);\r
-        }\r
+{\r
+    // add qc task and invm filter tasks\r
+    if(debug) cout << " ****** Received request for QC v" << harmonic << " task " << name << ", IO ****** " << flowEvent << endl;\r
+    TString fileName = AliAnalysisManager::GetCommonFileName();\r
+    fileName+=":QC";\r
+    if(debug) cout << "    --> Common filename: " << fileName << endl;\r
+    TString myFolder = Form("v%d", harmonic);\r
+    if(debug) cout << "    --> myFolder: " << myFolder << endl;\r
+    TString myName = Form("%s", name);\r
+    if(debug) cout << "    --> myName: " << myName << endl;\r
+    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+    AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s", myName.Data()), AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);\r
+    AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myName.Data()), NULL, POIfilter);\r
+    tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);\r
+    //    if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);\r
+    mgr->AddTask(tskFilter);\r
+    mgr->ConnectInput(tskFilter, 0, flowEvent);\r
+    mgr->ConnectOutput(tskFilter, 1, flowEventOut);\r
+    \r
+    AliAnalysisDataContainer *outQC = mgr->CreateContainer(myName.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);\r
+    AliAnalysisTaskQCumulants *tskQC = new AliAnalysisTaskQCumulants(Form("TaskQCumulants_%s", myName.Data()), kFALSE);\r
+    tskQC->SetApplyCorrectionForNUA(kTRUE);\r
+    tskQC->SetHarmonic(harmonic);\r
+    tskQC->SetBookOnlyBasicCCH(kTRUE);\r
+    mgr->AddTask(tskQC);\r
+    mgr->ConnectInput(tskQC, 0, flowEventOut);\r
+    mgr->ConnectOutput(tskQC, 1, outQC);\r
+}\r
 //_____________________________________________________________________________\r
 \r
 \r
 //_____________________________________________________________________________\r
-                    \r
+\r
 AliAnalysisTaskFlowTPCEMCalQCSP* ConfigHFEemcalMod(Bool_t useMC,Int_t minTPCCulster,AliHFEextraCuts::ITSPixel_t pixel){\r
     //\r
     // HFE standard task configuration\r
@@ -357,7 +357,4 @@ AliAnalysisTaskFlowTPCEMCalQCSP* ConfigHFEemcalMod(Bool_t useMC,Int_t minTPCCuls
     \r
 }\r
 \r
-//_____________________________________________________________________________\r
-\r
-\r
-\r
+//_____________________________________________________________________________
\ No newline at end of file