]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
pass weight histograms via Task containors
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 11 Feb 2009 13:12:33 +0000 (13:12 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 11 Feb 2009 13:12:33 +0000 (13:12 +0000)
PWG2/FLOW/AliAnalysisTaskQCumulants.cxx
PWG2/FLOW/AliAnalysisTaskQCumulants.h
PWG2/FLOW/AliFlowAnalysisWithQCumulants.h
PWG2/FLOW/AliFlowEventSimple.cxx
PWG2/FLOW/macros/runAliAnalysisTaskFlow.C
PWG2/FLOW/macros/runProofFlow.C

index 6b4260b8640cc4eeb08d67c5c1e97a0cb87130e1..c3113be157e608334b5e59e4cf92f1aa31e8136d 100644 (file)
@@ -64,7 +64,7 @@ ClassImp(AliAnalysisTaskQCumulants)
 
 //================================================================================================================
 
-AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on): 
+AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on, Bool_t useWeights): 
  AliAnalysisTask(name,""), 
  fESD(NULL),
  fAOD(NULL),
@@ -76,7 +76,12 @@ AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on
  fListHistos(NULL),
  fQAInt(NULL),
  fQADiff(NULL),
- fQA(on)
+ fQA(on),
+ fUseWeights(useWeights),
+ fUsePhiWeights(kFALSE),
+ fUsePtWeights(kFALSE),
+ fUseEtaWeights(kFALSE),
+ fListWeights(NULL)
 {
  //constructor
  cout<<"AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name)"<<endl;
@@ -85,6 +90,12 @@ AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
   
+ // Input slot #1 is needed for the weights 
+ if(useWeights)
+ {
+  DefineInput(1, TList::Class());   
+ }
+        
  // Output slot #0 writes into a TList container
  DefineOutput(0, TList::Class());  
  if(on) 
@@ -92,6 +103,7 @@ AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on
   DefineOutput(1, TList::Class());
   DefineOutput(2, TList::Class()); 
  }  
 }
 
 AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(): 
@@ -105,7 +117,12 @@ AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants():
  fListHistos(NULL),  
  fQAInt(NULL),
  fQADiff(NULL),
- fQA(kFALSE)
+ fQA(kFALSE),
+ fUseWeights(kFALSE),
+ fUsePhiWeights(kFALSE),
+ fUsePtWeights(kFALSE),
+ fUseEtaWeights(kFALSE),
+ fListWeights(NULL)
 {
  //dummy constructor
  cout<<"AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants()"<<endl;
@@ -189,7 +206,23 @@ void AliAnalysisTaskQCumulants::CreateOutputObjects()
  //analyser
  fQCA = new AliFlowAnalysisWithQCumulants();
  fQCA->Init();
-
+ //weights:
+ if(fUseWeights)
+ {
+  //pass the flags to class:
+  if(fUsePhiWeights) fQCA->SetUsePhiWeights(fUsePhiWeights);
+  if(fUsePtWeights) fQCA->SetUsePtWeights(fUsePtWeights);
+  if(fUseEtaWeights) fQCA->SetUseEtaWeights(fUseEtaWeights);
+  //get data from input slot #1 which is used for weights:
+  if(GetNinputs()==2) 
+  {                   
+   fListWeights = (TList*)GetInputData(1); 
+  }
+  //pass the list with weights to class:
+  if(fListWeights) fQCA->SetWeightsList(fListWeights);
+ }
  if(fQCA->GetHistList()) 
  {
   fListHistos = fQCA->GetHistList();
@@ -199,7 +232,7 @@ void AliAnalysisTaskQCumulants::CreateOutputObjects()
  {
   Printf("ERROR: Could not retrieve histogram list"); 
  }
+
  //PostData(0,fListHistos);
  
 }
@@ -302,7 +335,7 @@ void AliAnalysisTaskQCumulants::Exec(Option_t *)
   {
    PostData(1,fQAInt);
    PostData(2,fQADiff); 
-  }
+  }  
 }
 
 //================================================================================================================
@@ -312,7 +345,7 @@ void AliAnalysisTaskQCumulants::Terminate(Option_t *)
  //accessing the output list which contains the merged 2D and 3D profiles from all worker nodes
  fListHistos = (TList*)GetOutputData(0);
  //fListHistos->Print();
+
  if(fListHistos)
  {         
   //final results (integrated flow)
index 7bd9c09fef163a003115a52f62c93c1495b0f1c9..7719e64d3a19509ae0dc6df353667c583f4dbea9 100644 (file)
@@ -32,7 +32,7 @@ class TFile;
 class AliAnalysisTaskQCumulants : public AliAnalysisTask{
  public:
   AliAnalysisTaskQCumulants();
-  AliAnalysisTaskQCumulants(const char *name, Bool_t QAon = kFALSE);
+  AliAnalysisTaskQCumulants(const char *name, Bool_t QAon = kFALSE, Bool_t useWeights=kFALSE);
   virtual ~AliAnalysisTaskQCumulants(){}; 
   
   virtual void   ConnectInputData(Option_t *);
@@ -53,6 +53,13 @@ class AliAnalysisTaskQCumulants : public AliAnalysisTask{
   TList*        GetQAList2()              {return this->fQADiff; }
   void          SetQAOn(Bool_t kt)        {this->fQA = kt; }
   Bool_t        GetQAOn()                 {return this->fQA; }
+  
+  void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
+  Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
+  void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
+  Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
+  void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
+  Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
  
  private:
   AliAnalysisTaskQCumulants(const AliAnalysisTaskQCumulants& aatqc);
@@ -67,10 +74,16 @@ class AliAnalysisTaskQCumulants : public AliAnalysisTask{
   AliCFManager* fCFManager2;              //correction framework manager
   TList  *fListHistos;                    //collection of output 
      
-  TList*        fQAInt;                   // QA histogram list
-  TList*        fQADiff;                  // QA histogram list
+  TList*       fQAInt;                    // QA histogram list
+  TList*       fQADiff;                   // QA histogram list
 
-  Bool_t fQA;                             // flag to set the filling of the QA hostograms  
+  Bool_t       fQA;                       // flag to set the filling of the QA hostograms 
+  
+  Bool_t       fUseWeights;               // use any weights
+  Bool_t       fUsePhiWeights;            // phi weights
+  Bool_t       fUsePtWeights;             // v_2(pt) weights
+  Bool_t       fUseEtaWeights;            // v_2(eta) weights  
+  TList*       fListWeights;              // list with weights
      
   ClassDef(AliAnalysisTaskQCumulants, 1); 
 };
index 843973967c3b49335b666b72a3af58eabe79fe79..d4a9357e59187d653346c6c947c71d4f3352294c 100644 (file)
@@ -168,13 +168,13 @@ class AliFlowAnalysisWithQCumulants{
   void SetDirectCorrelations(TProfile* const dc) {this->fDirectCorrelations = dc;};
   TProfile* GetDirectCorrelations() const {return this->fDirectCorrelations;};
   
-  void SetUsePhiWeights(Bool_t const) {this->fUsePhiWeights = kTRUE;};
+  void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
   Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
   
-  void SetUsePtWeights(Bool_t const) {this->fUsePtWeights = kTRUE;};
+  void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
   Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
   
-  void SetUseEtaWeights(Bool_t const) {this->fUseEtaWeights = kTRUE;};
+  void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
   Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
 //----------------------------------------------------------------------------------------------------------------
  
index 7b378f8a7891c692fff878e56320734bbcfbc96d..b33d5558b202ef7d5a5f0e1c5d887b023341736c 100644 (file)
@@ -173,7 +173,7 @@ AliFlowVector AliFlowEventSimple::GetQ(Int_t n, TList *weightsList, Bool_t usePh
      {
       wEta=etaWeights->GetBinContent(1+(Int_t)(TMath::Floor(dEta/dBinWidthEta)))/dNormEta; 
      } 
-       
+   
      //building up the weighted Q-vector:       
      dQX += wPhi*wPt*wEta*TMath::Cos(iOrder*dPhi);
      dQY += wPhi*wPt*wEta*TMath::Sin(iOrder*dPhi); 
index 295fbd9d72cbe166210463cd5a228e0ea457d28d..d4f8a6316ed07aa6f5e6cbd624d3d4140a49659b 100644 (file)
 //SETTING THE ANALYSIS
 
 //Flow analysis methods can be: (set to kTRUE or kFALSE)
-Bool_t SP    = kTRUE;
-Bool_t LYZ1  = kTRUE;
+Bool_t SP    = kFALSE;
+Bool_t LYZ1  = kFALSE;
 Bool_t LYZ2  = kFALSE;
 Bool_t LYZEP = kFALSE;
-Bool_t GFC   = kTRUE;
+Bool_t GFC   = kFALSE;
 Bool_t QC    = kTRUE;
-Bool_t FQD   = kTRUE;
-Bool_t MCEP  = kTRUE;
+Bool_t FQD   = kFALSE;
+Bool_t MCEP  = kFALSE;
 
 
 //Type of analysis can be:
@@ -78,9 +78,15 @@ const Int_t PDG2 = 211;
 const Int_t minclustersTPC2 = 50;
 const Int_t maxnsigmatovertex2 = 3;
 
+//WEIGHTS SETTINGS: 
+//to use or not to use the weights - that is a question!
+Bool_t usePhiWeights = kTRUE; //Phi
+Bool_t usePtWeights  = kFALSE; //v'(pt)
+Bool_t useEtaWeights = kFALSE; //v'(eta)
+Bool_t useWeights = usePhiWeights||usePtWeights||usePtWeights;
 
-//void runAliAnalysisTaskFlow(Int_t nRuns = 10, const Char_t* dataDir="/data/alice2/kolk/Therminator_midcentral", Int_t offset = 0) 
-void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snelling/alice_data/Therminator_midcentral", Int_t offset = 0) 
+void runAliAnalysisTaskFlow(Int_t nRuns = 4, const Char_t* dataDir="/data/alice2/kolk/Therminator_midcentral", Int_t offset = 0) 
+//void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snelling/alice_data/Therminator_midcentral", Int_t offset = 0) 
 
 {
   TStopwatch timer;
@@ -430,6 +436,20 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel
   cfmgr2->SetParticleCutsList(AliCFManager::kPartRecCuts,recList2);
   cfmgr2->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList2);
   
+  //weights: 
+  TFile *weightsFile = NULL;
+  TList *weightsList = NULL;
+  
+  if(useWeights)
+  {
+   //open the file with the weights:
+   weightsFile = TFile::Open("weights.root","READ");
+   if(weightsFile)
+   {
+    //access the list which holds the histos with weigths:
+    weightsList = (TList*)weightsFile->Get("weights");
+   }else{cout<<" WARNING: the file <weights.root> with weights from the previuos run was not accessed."<<endl;} 
+  }//end of if(useWeights)
   
   if (LYZ2){  
     // read the input file from the first run 
@@ -551,9 +571,12 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel
     mgr->AddTask(taskGFC);
   }
   if (QC){
-    if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE);}
-    else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE);}
+    if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE,useWeights);}
+    else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE,useWeights);}
     taskQC->SetAnalysisType(type);
+    taskQC->SetUsePhiWeights(usePhiWeights); 
+    taskQC->SetUsePtWeights(usePtWeights);
+    taskQC->SetUseEtaWeights(useEtaWeights); 
     taskQC->SetCFManager1(cfmgr1);
     taskQC->SetCFManager2(cfmgr2);
     if (QA) { 
@@ -586,9 +609,14 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel
   
   
   // Create containers for input/output
-  
   AliAnalysisDataContainer *cinput1 = 
     mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
+    
+  //AliAnalysisDataContainer *cinputWeights = NULL;  
+  if(useWeights)
+  {    
+   cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer); 
+  }  
   
   if (LYZ2){ 
     AliAnalysisDataContainer *cinputLYZ2 = 
@@ -809,6 +837,11 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel
     mgr->ConnectOutput(taskQC,0,coutputQC);
     if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC);
     mgr->ConnectOutput(taskQC,2,coutputQA2QC); }
+    if(useWeights)
+    {
+     mgr->ConnectInput(taskQC,1,cinputWeights);
+     cinputWeights->SetData(weightsList);
+    } 
   }
   if (FQD)   { 
     mgr->ConnectInput(taskFQD,0,cinput1); 
index 7168161a15d170afe58d8359480903aef26f4b1a..9b32bd93464da85f8ddc9ee9f243bbe700888cdd 100644 (file)
 ///////////////////////////////////////////////////////////////////////////////////
 
 
-//RUN SETTINGS
-
+//RUN SETTINGS:
 //Flow analysis method can be:(set to kTRUE or kFALSE)
-Bool_t SP    = kTRUE;
+Bool_t SP    = kFALSE;
 Bool_t LYZ1  = kTRUE;
 Bool_t LYZ2  = kFALSE;
 Bool_t LYZEP = kFALSE;
-Bool_t GFC   = kFALSE;
+Bool_t GFC   = kTRUE;
 Bool_t QC    = kTRUE;
 Bool_t FQD   = kTRUE;
-Bool_t MCEP  = kFALSE;
+Bool_t MCEP  = kTRUE;
 
 //analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1
 const TString type = "ESD";
@@ -48,43 +47,49 @@ const TString type = "ESD";
 //Bolean to fill/not fill the QA histograms
 Bool_t QA = kFALSE;   
 
-//SETTING THE CUTS
-
+//SETTING THE CUTS:
 //for integrated flow
 const Double_t ptmin1 = 0.0;
-const Double_t ptmax1 = 1000.0;
+const Double_t ptmax1 = 10.0;
 const Double_t ymin1  = -1.;
 const Double_t ymax1  = 1.;
 const Int_t mintrackrefsTPC1 = 2;
 const Int_t mintrackrefsITS1 = 3;
 const Int_t charge1 = 1;
-Bool_t UsePIDIntegratedFlow = kFALSE;
+Bool_t UsePIDIntegratedFlow = kTRUE;
 const Int_t PDG1 = 211;
 const Int_t minclustersTPC1 = 50;
 const Int_t maxnsigmatovertex1 = 3;
 
 //for differential flow
 const Double_t ptmin2 = 0.0;
-const Double_t ptmax2 = 1000.0;
+const Double_t ptmax2 = 10.0;
 const Double_t ymin2  = -1.;
 const Double_t ymax2  = 1.;
 const Int_t mintrackrefsTPC2 = 2;
 const Int_t mintrackrefsITS2 = 3;
 const Int_t charge2 = 1;
-Bool_t UsePIDDifferentialFlow = kFALSE;
+Bool_t UsePIDDifferentialFlow = kTRUE;
 const Int_t PDG2 = 211;
 const Int_t minclustersTPC2 = 50;
 const Int_t maxnsigmatovertex2 = 3;
 
+//WEIGHTS SETTINGS: 
+//to use or not to use the weights - that is a question!
+Bool_t usePhiWeights = kTRUE; //Phi
+Bool_t usePtWeights  = kFALSE; //v'(pt)
+Bool_t useEtaWeights = kFALSE; //v'(eta)
+Bool_t useWeights = usePhiWeights||usePtWeights||usePtWeights;
+
 //ESD (pp)
 //void runProofFlow(const Char_t* data="/COMMON/COMMON/LHC08c11_10TeV_0.5T", Int_t nRuns=-1, Int_t offset=0) {
 //void runProofFlow(const Char_t* data="/COMMON/COMMON/LHC08c18_0.9TeV_0T_Phojet", Int_t nRuns=-1, Int_t offset=0) {
 
 
 //ESD (therminator)
-//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_ESD", Int_t nRuns=-1, Int_t offset=0) {
+void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_ESD", Int_t nRuns=-1, Int_t offset=0) {
 
-void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nRuns=-1, Int_t offset=0) {
+//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nRuns=-1, Int_t offset=0) {
 //void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_central", Int_t nRuns=-1, Int_t offset=0) {
 
 
@@ -93,7 +98,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
 
 //AOD
 //void runProofFlow(const Char_t* data="/PWG2/nkolk/myDataSet", Int_t nRuns=-1, Int_t offset=0) {
-//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_AOD", Int_t nRuns=-1, Int_t offset=0) {
+//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_AOD", Int_t nRuns=44, Int_t offset=0) {
 
   TStopwatch timer;
   timer.Start();
@@ -128,7 +133,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
   gProof->EnablePackage("PWG2AOD");
   gProof->UploadPackage("CORRFW.par");
   gProof->EnablePackage("CORRFW");
-  //  gProof->ClearPackage("PWG2flow");
+  gProof->ClearPackage("PWG2flow");
   gProof->UploadPackage("PWG2flow.par");
   gProof->EnablePackage("PWG2flow");
   
@@ -447,11 +452,26 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
   cfmgr2->SetParticleCutsList(AliCFManager::kPartRecCuts,recList2);
   cfmgr2->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList2);
   
+  //weights: 
+  TFile *weightsFile = NULL;
+  TList *weightsList = NULL;
+
+  if(useWeights)
+  {
+   //open the file with the weights:
+   weightsFile = TFile::Open("weights.root","READ");
+   if(weightsFile)
+   {
+    //access the list which holds the histos with weigths:
+    weightsList = (TList*)weightsFile->Get("weights");
+   }else{cout<<" WARNING: the file <weights.root> with weights from the previuos run was not accessed."<<endl;} 
+  }//end of if(useWeights)
+
   if (LYZ2){  
     // read the input file from the first run 
     TString inputFileNameLYZ2 = "outputLYZ1analysis" ;
     inputFileNameLYZ2 += type;
-    inputFileNameLYZ2 += "_firstrun.root";
+    inputFileNameLYZ2 += ".root";
     cout<<"The input file is "<<inputFileNameLYZ2.Data()<<endl;
     TFile* fInputFileLYZ2 = new TFile(inputFileNameLYZ2.Data(),"READ");
     if(!fInputFileLYZ2 || fInputFileLYZ2->IsZombie()) { 
@@ -467,7 +487,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     // read the input file from the second LYZ run
     TString inputFileNameLYZEP = "outputLYZ2analysis" ;
     inputFileNameLYZEP += type;
-    inputFileNameLYZEP += "_secondrun.root";
+    inputFileNameLYZEP += ".root";
     cout<<"The input file is "<<inputFileNameLYZEP.Data()<<endl;
     TFile* fInputFileLYZEP = new TFile(inputFileNameLYZEP.Data(),"READ");
     if(!fInputFileLYZEP || fInputFileLYZEP->IsZombie()) { 
@@ -475,7 +495,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     else {
       TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("cobjLYZ2");
       if (!fInputListLYZEP) {cout<<"list is NULL pointer!"<<endl;}
-    }kTRUE;
+    };
     cout<<"LYZEP input file/list read..."<<endl;
   }
   
@@ -503,7 +523,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     
     AliMCEventHandler *mc = new AliMCEventHandler();
     mgr->SetMCtruthEventHandler(mc); }
-  
+
   //____________________________________________//
   // tasks
   if (SP){
@@ -566,9 +586,12 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     mgr->AddTask(taskGFC);
   }
   if (QC){
-    if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE);}
-    else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE);}
+    if (QA) { AliAnalysisTaskQCumulants *taskQCtaskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE,useWeights);}
+    else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE,useWeights);}
     taskQC->SetAnalysisType(type);
+    taskQC->SetUsePhiWeights(usePhiWeights); 
+    taskQC->SetUsePtWeights(usePtWeights);
+    taskQC->SetUseEtaWeights(useEtaWeights);   
     taskQC->SetCFManager1(cfmgr1);
     taskQC->SetCFManager2(cfmgr2);
     if (QA) { 
@@ -598,11 +621,15 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
       taskMCEP->SetQAList2(qaDiffMCEP); }
     mgr->AddTask(taskMCEP);
   }
-  
-  
   // Create containers for input/output
   AliAnalysisDataContainer *cinput1 = 
     mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
+
+  if(useWeights)
+  {    
+   AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer); 
+  }
   
   if (LYZ2){ 
     AliAnalysisDataContainer *cinputLYZ2 = mgr->CreateContainer("cobjLYZ2in",TList::Class(),AliAnalysisManager::kInputContainer); } 
@@ -619,14 +646,14 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
   if(LYZ1) {
     TString outputLYZ1 = "outputLYZ1analysis";
     outputLYZ1+= type;
-    outputLYZ1+= "_firstrun.root";
+    outputLYZ1+= ".root";
     AliAnalysisDataContainer *coutputLYZ1 = mgr->CreateContainer("cobjLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1);
   }
   
   if(LYZ2) {
     TString outputLYZ2 = "outputLYZ2analysis";
     outputLYZ2+= type;
-    outputLYZ2+= "_secondrun.root";
+    outputLYZ2+= ".root";
     AliAnalysisDataContainer *coutputLYZ2 = mgr->CreateContainer("cobjLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2);
   }
   
@@ -664,8 +691,7 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     outputMCEP+= ".root";
     AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP);
   }
-  
-  
+   
   if (QA) { 
     if(SP) {
       TString qaNameIntSP = "QAforInt_SP_";
@@ -815,6 +841,12 @@ void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nR
     mgr->ConnectOutput(taskQC,0,coutputQC);
     if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC);
     mgr->ConnectOutput(taskQC,2,coutputQA2QC); }
+    if(useWeights)
+    {
+     mgr->ConnectInput(taskQC,1,cinputWeights);
+     cinputWeights->SetData(weightsList);
+    } 
+
   }
   if (FQD)   { 
     mgr->ConnectInput(taskFQD,0,cinput1);