{
ChiQ[0]=AvM*V2/pow(AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V2*AvM,2.),0.5);
SdQ[0]=pow(((1./(2.*AvM*nEvents))*((1.+1.*pow(ChiQ[0],2))/(1.*pow(ChiQ[0],2)))),0.5);
- cout<<" v_"<<fgkFlow<<"{2} = "<<100.*V2<<"%, chi{2} = "<<ChiQ[0]<<", sd{2} = "<<100.*SdQ[0]<<"%"<<endl;
- fifr->SetBinContent(1,100.*V2);
- fifr->SetBinError(1,100.*SdQ[0]);
+ cout<<" v_"<<fgkFlow<<"{2} = "<<V2<<" +/- "<<SdQ[0]<<", chi{2} = "<<ChiQ[0]<<endl;
+ fifr->SetBinContent(1,V2);
+ fifr->SetBinError(1,SdQ[0]);
}
else
{
{
ChiQ[1]=AvM*V4/pow(AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V4*AvM,2.),0.5);
SdQ[1]=(1./(pow(2.*AvM*nEvents,.5)))*pow((1.+2.*pow(ChiQ[1],2)+(1./4.)*pow(ChiQ[1],4.)+(1./4.)*pow(ChiQ[1],6.))/((1./4.)*pow(ChiQ[1],6.)),.5);
- cout<<" v_"<<fgkFlow<<"{4} = "<<100.*V4<<"%, chi{4} = "<<ChiQ[1]<<", sd{4} = "<<100.*SdQ[1]<<"%"<<endl;
- fifr->SetBinContent(2,100.*V4);
- fifr->SetBinError(2,100.*SdQ[1]);
+ cout<<" v_"<<fgkFlow<<"{4} = "<<V4<<" +/- "<<SdQ[1]<<", chi{4} = "<<ChiQ[1]<<endl;
+ fifr->SetBinContent(2,V4);
+ fifr->SetBinError(2,SdQ[1]);
}
else
{
{
ChiQ[2]=AvM*V6/pow(AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V6*AvM,2.),0.5);
SdQ[2]=(1./(pow(2.*AvM*nEvents,.5)))*pow((3.+18.*pow(ChiQ[2],2)+9.*pow(ChiQ[2],4.)+28.*pow(ChiQ[2],6.)+12.*pow(ChiQ[2],8.)+24.*pow(ChiQ[2],10.))/(24.*pow(ChiQ[2],10.)),.5);
- cout<<" v_"<<fgkFlow<<"{6} = "<<100.*V6<<"%, chi{6} = "<<ChiQ[2]<<", sd{6} = "<<100.*SdQ[2]<<"%"<<endl;
- fifr->SetBinContent(3,100.*V6);
- fifr->SetBinError(3,100.*SdQ[2]);
+ cout<<" v_"<<fgkFlow<<"{6} = "<<V6<<" +/- "<<SdQ[2]<<", chi{6} = "<<ChiQ[2]<<endl;
+ fifr->SetBinContent(3,V6);
+ fifr->SetBinError(3,SdQ[2]);
}
else
{
{
ChiQ[3]=AvM*V8/pow(AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V8*AvM,2.),0.5);
SdQ[3]=(1./(pow(2.*AvM*nEvents,.5)))*pow((12.+96.*pow(ChiQ[3],2)+72.*pow(ChiQ[3],4.)+304.*pow(ChiQ[3],6.)+257.*pow(ChiQ[3],8.)+804.*pow(ChiQ[3],10.)+363.*pow(ChiQ[3],12.)+726.*pow(ChiQ[3],14.))/(726.*pow(ChiQ[3],14.)),.5);
- cout<<" v_"<<fgkFlow<<"{8} = "<<100.*V8<<"%, chi{8} = "<<ChiQ[3]<<", sd{8} = "<<100.*SdQ[3]<<"%"<<endl;
- fifr->SetBinContent(4,100.*V8);
- fifr->SetBinError(4,100.*SdQ[3]);
+ cout<<" v_"<<fgkFlow<<"{8} = "<<V8<<" +/- "<<SdQ[3]<<", chi{8} = "<<ChiQ[3]<<endl;
+ fifr->SetBinContent(4,V8);
+ fifr->SetBinError(4,SdQ[3]);
}
else
{
//v_2{10}
if (AvM!=0 && cumulant[4]>=0.){
- cout<<"v_"<<fgkFlow<<"{10} = "<<100.*V10<<"%"<<endl;
- fifr->SetBinContent(5,100.*pow((1./456.)*cumulant[4],(1./10.)));
+ cout<<"v_"<<fgkFlow<<"{10} = "<<V10<<endl;
+ fifr->SetBinContent(5,pow((1./456.)*cumulant[4],(1./10.)));
} else {
cout<<"v_"<<fgkFlow<<"{10} = Im"<<endl;
}
//v_2{12}
if (AvM!=0 && AvM!=0 && cumulant[5]<=0.){
- cout<<"v_"<<fgkFlow<<"{12} = "<<100.*V12<<"%"<<endl;
- fifr->SetBinContent(6,100.*pow(-(1./9460.)*cumulant[5],(1./12.)));
+ cout<<"v_"<<fgkFlow<<"{12} = "<<V12<<endl;
+ fifr->SetBinContent(6,pow(-(1./9460.)*cumulant[5],(1./12.)));
} else {
cout<<"v_"<<fgkFlow<<"{12} = Im"<<endl;
}
//v_2{14}
if (AvM!=0 && cumulant[6]>=0.){
- cout<<"v_"<<fgkFlow<<"{14} = "<<100.*V14<<"%"<<endl;
- fifr->SetBinContent(7,100.*pow((1./274800.)*cumulant[6],(1./14.)));
+ cout<<"v_"<<fgkFlow<<"{14} = "<<V14<<endl;
+ fifr->SetBinContent(7,pow((1./274800.)*cumulant[6],(1./14.)));
} else {
cout<<"v_"<<fgkFlow<<"{14} = Im"<<endl;
}
//v_2{16}
if (AvM!=0 && cumulant[7]<=0.){
- cout<<"v_"<<fgkFlow<<"{16} = "<<100.*V16<<"%"<<endl;
- fifr->SetBinContent(8,100.*pow(-(1./10643745.)*cumulant[7],(1./16.)));
+ cout<<"v_"<<fgkFlow<<"{16} = "<<V16<<endl;
+ fifr->SetBinContent(8,pow(-(1./10643745.)*cumulant[7],(1./16.)));
} else {
cout<<"v_"<<fgkFlow<<"{16} = Im"<<endl;
}
//v'_{2/2}{2}
if(cumulant[0]>0)
{
- v2[b]=100.*DiffCumulant2[b]/pow(cumulant[0],.5);
+ v2[b]=DiffCumulant2[b]/pow(cumulant[0],.5);
if (AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V2*AvM,2.)>0.)
{
//Sddiff2[b]=pow((1./(2.*fBinNoOfParticles[b]))*((1.+pow(ChiQ[0],2.))/pow(ChiQ[0],2.)),0.5);
//v'_{2/2}{4}
if(cumulant[1]<0)
{
- v4[b]=-100.*DiffCumulant4[b]/pow(-cumulant[1],.75);
+ v4[b]=-DiffCumulant4[b]/pow(-cumulant[1],.75);
if (AvQ2x+AvQ2y-pow(AvQx,2.)-pow(AvQy,2.)-pow(V4*AvM,2.)>0.)
{
//Sddiff4[b]=pow((1./(2.*fBinNoOfParticles[b]))*((2.+6.*pow(ChiQ[1],2.)+pow(ChiQ[1],4.)+pow(ChiQ[1],6.))/pow(ChiQ[1],6.)),0.5);
//v'_{2/2}{6}
if(cumulant[2]>0){
//cout<<"v'_2/2{6} = "<<100.*DiffCumulant6[b]/(4.*pow((1./4.)*cumulant[2],(5./6.)))<<"%"<<endl;
- v6[b]=100.*DiffCumulant6[b]/(4.*pow((1./4.)*cumulant[2],(5./6.)));
+ v6[b]=DiffCumulant6[b]/(4.*pow((1./4.)*cumulant[2],(5./6.)));
//fCommonHistsRes6->FillDifferentialFlow(b+1,v6[b],0.);
fdfr6->SetBinContent(b+1,v6[b]);
}else{
//v'_{2/2}{8}
if(cumulant[3]<0){
//cout<<"v'_2/2{8} = "<<-100.*DiffCumulant8[b]/(33.*pow(-(1./33.)*cumulant[3],(7./8.)))<<"%"<<endl;
- v8[b]=-100.*DiffCumulant8[b]/(33.*pow(-(1./33.)*cumulant[3],(7./8.)));
+ v8[b]=-DiffCumulant8[b]/(33.*pow(-(1./33.)*cumulant[3],(7./8.)));
//fCommonHistsRes8->FillDifferentialFlow(b+1,v8[b],0.);
fdfr8->SetBinContent(b+1,v8[b]);
}else{
if(secondOrderQCumulant>0.){
vn2 = pow(secondOrderQCumulant,0.5);//v_n{2}
sd2 = 0.5*pow(secondOrderQCumulant,-0.5)*secondOrderQCumulantError;//sigma_{v_n{2}}
- cout<<" v_"<<n<<"{2} = "<<100.*vn2<<"% +/- "<<100.*sd2<<"%"<<endl;
- fIntRes->SetBinContent(1,100*vn2);
- fIntRes->SetBinError(1,100*sd2);
+ cout<<" v_"<<n<<"{2} = "<<vn2<<" +/- "<<sd2<<endl;
+ fIntRes->SetBinContent(1,vn2);
+ fIntRes->SetBinError(1,sd2);
}else{
cout<<" v_"<<n<<"{2} = Im"<<endl;
}
if(four!=0. && fourthOrderQCumulant<0.){
vn4 = pow(-fourthOrderQCumulant,1./4.); //v_n{4}
sd4 = 0.25*pow(-fourthOrderQCumulant,-3./4.)*fourthOrderQCumulantError;//sigma_{v_n{4}}
- cout<<" v_"<<n<<"{4} = "<<100*vn4<<"% +/- "<<100.*sd4<<"%"<<endl;
- fIntRes->SetBinContent(2,100*vn4);
- fIntRes->SetBinError(2,100*sd4);
+ cout<<" v_"<<n<<"{4} = "<<vn4<<" +/- "<<sd4<<endl;
+ fIntRes->SetBinContent(2,vn4);
+ fIntRes->SetBinError(2,sd4);
}else{
cout<<" v_"<<n<<"{4} = Im"<<endl;
}
if(six!=0. && sixthOrderQCumulant>0.){
vn6 = pow((1./4.)*sixthOrderQCumulant,1./6.); //v_n{6}
sd6 = (1./6.)*pow(2.,-1./3.)*pow(sixthOrderQCumulant,-5./6.)*sixthOrderQCumulantError;
- cout<<" v_"<<n<<"{6} = "<<100*vn6<<"% +/- "<<100.*sd6<<"%"<<endl;
- fIntRes->SetBinContent(3,100*vn6);
- fIntRes->SetBinError(3,100*sd6);
+ cout<<" v_"<<n<<"{6} = "<<vn6<<" +/- "<<sd6<<endl;
+ fIntRes->SetBinContent(3,vn6);
+ fIntRes->SetBinError(3,sd6);
+ //fIntRes->Draw("E1P0");
}else{
cout<<" v_"<<n<<"{6} = Im"<<endl;
}
if(fbin2_1n1n->GetBinEntries(bb)>0.&&vn2!=0)
{
secondOrderQCumulantDiffFlow = fbin2_1n1n->GetBinContent(bb);
- fDiffRes2nd->SetBinContent(bb,100.*secondOrderQCumulantDiffFlow/vn2);
+ fDiffRes2nd->SetBinContent(bb,secondOrderQCumulantDiffFlow/vn2);
}
if(fbin4_1n1n1n1n->GetBinEntries(bb)>0.&&vn4!=0.)
{
fourthOrderQCumulantDiffFlow = fbin4_1n1n1n1n->GetBinContent(bb)-2.*fbin2_1n1n->GetBinContent(bb)*pow(vn2,2.);
- fDiffRes4th->SetBinContent(bb,-100.*fourthOrderQCumulantDiffFlow/pow(vn4,3.));
+ fDiffRes4th->SetBinContent(bb,-1.*fourthOrderQCumulantDiffFlow/pow(vn4,3.));
}
}
//---------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
//<Q-vector components>
*/
-
+
+
+
+
+
}
+
+
+
+
+
+
+
+
+
+
+
+++ /dev/null
-// from CreateESDChain.C - instead of #include "CreateESDChain.C"
-TChain* CreateESDChain(const char* aDataDir = "ESDfiles.txt", Int_t aRuns = 20, Int_t offset = 0) ;
-void LookupWrite(TChain* chain, const char* target) ;
-
-void runAliAnalysisTaskCumulants(Int_t nRuns =-1, TString type = "ESD", const Char_t* dataDir="/data/alice2/ante/ab2", Int_t offset = 0)
-//void runAliAnalysisTaskCumulants(Int_t nRuns = -1, TString type = "ESD", const Char_t* dataDir="/data/alice2/ab2", Int_t offset = 0)
-//void runAliAnalysisTaskCumulants(Int_t nRuns = -1, TString type = "ESD", const Char_t* dataDir="/data/alice2/LHyquid3_rot", Int_t offset = 0)
-//void runAliAnalysisTaskCumulants(Int_t nRuns = 2, TString type = "MC", const Char_t* dataDir="/Users/snelling/alice_data/TherminatorFix", Int_t offset = 0)
-{
- TStopwatch timer;
- timer.Start();
-
- // include path (to find the .h files when compiling)
- gSystem->AddIncludePath("-I$ALICE_ROOT/include") ;
- gSystem->AddIncludePath("-I$ROOTSYS/include") ;
-
- // load needed libraries
- gSystem->Load("libTree.so");
- gSystem->Load("libESD.so");
- cerr<<"libESD loaded..."<<endl;
- gSystem->Load("libANALYSIS.so");
- cerr<<"libANALYSIS.so loaded..."<<endl;
- gSystem->Load("libPWG2flow.so");
- cerr<<"libPWG2flow.so loaded..."<<endl;
-
- // create the TChain. CreateESDChain() is defined in CreateESDChain.C
- TChain* chain = CreateESDChain(dataDir, nRuns, offset);
- cout<<"chain ("<<chain<<")"<<endl;
-
- //____________________________________________//
- // Make the analysis manager
- AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-
- //AliVEventHandler* esdH = new AliESDInputHandler;
- //mgr->SetInputEventHandler(esdH);
- //AliMCEventHandler *mc = new AliMCEventHandler();
- //mgr->SetMCtruthEventHandler(mc);
-
- if (type == "ESD"){
- AliVEventHandler* esdH = new AliESDInputHandler;
- mgr->SetInputEventHandler(esdH); }
-
- if (type == "AOD"){
- AliVEventHandler* aodH = new AliAODInputHandler;
- mgr->SetInputEventHandler(aodH); }
-
- if (type == "MC"){
- AliMCEventHandler *mc = new AliMCEventHandler();
- mgr->SetMCtruthEventHandler(mc); }
-
- //____________________________________________//
- // 1st cumulant task
- AliAnalysisTaskCumulants *task1 = new AliAnalysisTaskCumulants("TaskCumulants");
- task1->SetAnalysisType(type);
- mgr->AddTask(task1);
-
- // Create containers for input/output
- AliAnalysisDataContainer *cinput1 =
- mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
- AliAnalysisDataContainer *coutput1 =
- mgr->CreateContainer("cobj1", TList::Class(),AliAnalysisManager::kOutputContainer,"outputFromCumulantAnalysisESD.root");
-
- //____________________________________________//
- mgr->ConnectInput(task1,0,cinput1);
- mgr->ConnectOutput(task1,0,coutput1);
-
- if (!mgr->InitAnalysis()) return;
- mgr->PrintStatus();
- mgr->StartAnalysis("local",chain);
-
- timer.Stop();
- timer.Print();
-}
-
-
-// Helper macros for creating chains
-// from: CreateESDChain.C,v 1.10 jgrosseo Exp
-
-TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)
-{
- // creates chain of files in a given directory or file containing a list.
- // In case of directory the structure is expected as:
- // <aDataDir>/<dir0>/AliESDs.root
- // <aDataDir>/<dir1>/AliESDs.root
- // ...
-
- if (!aDataDir)
- return 0;
-
- Long_t id, size, flags, modtime;
- if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
- {
- printf("%s not found.\n", aDataDir);
- return 0;
- }
-
- TChain* chain = new TChain("esdTree");
- TChain* chaingAlice = 0;
-
- if (flags & 2)
- {
- TString execDir(gSystem->pwd());
- TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
- TList* dirList = baseDir->GetListOfFiles();
- Int_t nDirs = dirList->GetEntries();
- gSystem->cd(execDir);
-
- Int_t count = 0;
-
- for (Int_t iDir=0; iDir<nDirs; ++iDir)
- {
- TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
- if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
- continue;
-
- if (offset > 0)
- {
- --offset;
- continue;
- }
-
- if (count++ == aRuns)
- break;
-
- TString presentDirName(aDataDir);
- presentDirName += "/";
- presentDirName += presentDir->GetName();
- chain->Add(presentDirName + "/AliESDs.root/esdTree");
- cerr<<presentDirName<<endl;
- }
-
- }
- else
- {
- // Open the input stream
- ifstream in;
- in.open(aDataDir);
-
- Int_t count = 0;
-
- // Read the input list of files and add them to the chain
- TString esdfile;
- while(in.good()) {
- in >> esdfile;
- if (!esdfile.Contains("root")) continue; // protection
-
- if (offset > 0)
- {
- --offset;
- continue;
- }
-
- if (count++ == aRuns)
- break;
-
- // add esd file
- chain->Add(esdfile);
- }
-
- in.close();
- }
-
- return chain;
-}
-1
-void LookupWrite(TChain* chain, const char* target)
-{
- // looks up the chain and writes the remaining files to the text file target
-
- chain->Lookup();
-
- TObjArray* list = chain->GetListOfFiles();
- TIterator* iter = list->MakeIterator();
- TObject* obj = 0;
-
- ofstream outfile;
- outfile.open(target);
-
- while ((obj = iter->Next()))
- outfile << obj->GetTitle() << "#AliESDs.root" << endl;
-
- outfile.close();
-
- delete iter;
-}
-
// LYZ2 = Lee Yang Zeroes second run (for PbPb)
// LYZEP = Lee Yang Zeroes Event Plane (for PbPb)
// GFC = Generating Function Cumulants (for PbPb)
+// QC = Q-cumulants (for PbPb)
// MCEP = Flow calculated from the real MC event plane (for PbPb only!)
//
// The LYZ analysis should be done in the following order;
//SETTING THE ANALYSIS
//Flow analysis methods can be: (set to kTRUE or kFALSE)
-Bool_t SP = kTRUE;
+Bool_t SP = kFALSE;
Bool_t LYZ1 = kFALSE;
Bool_t LYZ2 = kFALSE;
-Bool_t LYZEP = kTRUE;
-Bool_t GFC = kFALSE;
-Bool_t MCEP = kTRUE;
+Bool_t LYZEP = kFALSE;
+Bool_t GFC = kTRUE;
+Bool_t QC = kTRUE;
+Bool_t MCEP = kFALSE;
//Type of analysis can be:
const Int_t maxnsigmatovertex2 = 3;
-void runAliAnalysisTaskFlowMore(Int_t nRuns = 3, const Char_t* dataDir="/data/alice1/kolk/TherminatorNov08", Int_t offset = 0)
+void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/data/alice2/ante/ab2", Int_t offset = 0)
+ //void runAliAnalysisTaskFlowMore(Int_t nRuns = 3, const Char_t* dataDir="/data/alice1/kolk/TherminatorNov08", Int_t offset = 0)
//void runAliAnalysisTaskFlowMore(Int_t nRuns = 1, const Char_t* dataDir="/data/alice1/kolk/AOD", Int_t offset = 0)
//void runAliAnalysisTaskFlowMore(Int_t nRuns = 3, const Char_t* dataDir="/data/alice1/kolk/testCrashIfNoKine", Int_t offset = 0)
//void runAliAnalysisTaskFlowMore(Int_t nRuns = 3, const Char_t* dataDir="/data/alice1/kolk/testCrashIfMissingKine", Int_t offset = 0)
if (GFC) {
TList* qaIntGFC = new TList();
TList* qaDiffGFC = new TList(); }
+ if (QC) {
+ TList* qaIntQC = new TList();
+ TList* qaDiffQC = new TList(); }
if (MCEP) {
TList* qaIntMCEP = new TList();
TList* qaDiffMCEP = new TList(); }
if (LYZ2) { mcKineCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcKineCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcKineCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcKineCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcKineCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcKineCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcKineCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcKineCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcKineCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcKineCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { mcGenCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcGenCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcGenCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcGenCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcGenCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcGenCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcGenCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcGenCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcGenCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcGenCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { mcAccCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcAccCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcAccCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcAccCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcAccCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcAccCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcAccCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcAccCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcAccCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcAccCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recKineCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recKineCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recKineCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recKineCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recKineCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recKineCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recKineCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recKineCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recKineCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recKineCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recQualityCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recQualityCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recQualityCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recQualityCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recQualityCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recQualityCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recQualityCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recQualityCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recQualityCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recQualityCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recIsPrimaryCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recIsPrimaryCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recIsPrimaryCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recIsPrimaryCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recIsPrimaryCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recIsPrimaryCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recIsPrimaryCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recIsPrimaryCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recIsPrimaryCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recIsPrimaryCuts2->SetQAOn(qaDiffMCEP); }
}
if (GFC) {
cutPID1->SetQAOn(qaIntGFC);
cutPID2->SetQAOn(qaDiffGFC); }
+ if (QC) {
+ cutPID1->SetQAOn(qaIntQC);
+ cutPID2->SetQAOn(qaDiffQC); }
if (MCEP) {
cutPID1->SetQAOn(qaIntMCEP);
cutPID2->SetQAOn(qaDiffMCEP); }
taskGFC->SetQAList2(qaDiffGFC); }
mgr->AddTask(taskGFC);
}
+ if (QC){
+ if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE);}
+ else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE);}
+ taskQC->SetAnalysisType(type);
+ taskQC->SetCFManager1(cfmgr1);
+ taskQC->SetCFManager2(cfmgr2);
+ if (QA) {
+ taskQC->SetQAList1(qaIntQC);
+ taskQC->SetQAList2(qaDiffQC); }
+ mgr->AddTask(taskQC);
+ }
if (MCEP){
if (QA) { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kTRUE);}
else { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kFALSE);}
AliAnalysisDataContainer *coutputGFC =
mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC);
}
+
+ if(QC) {
+ TString outputQC = "outputQCanalysis";
+ outputQC+= type;
+ outputQC+= ".root";
+ AliAnalysisDataContainer *coutputQC =
+ mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC);
+ }
if(MCEP) {
TString outputMCEP = "outputMCEPanalysis";
AliAnalysisDataContainer *coutputQA2GFC =
mgr->CreateContainer("QAdiffGFC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffGFC);
}
+ if(QC) {
+ TString qaNameIntQC = "QAforInt_QC_";
+ qaNameIntQC += type;
+ qaNameIntQC += ".root";
+ AliAnalysisDataContainer *coutputQA1QC =
+ mgr->CreateContainer("QAintQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntQC);
+
+ TString qaNameDiffQC = "QAforDiff_QC_";
+ qaNameDiffQC += type;
+ qaNameDiffQC += ".root";
+ AliAnalysisDataContainer *coutputQA2QC =
+ mgr->CreateContainer("QAdiffQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffQC);
+ }
if(MCEP) {
TString qaNameIntMCEP = "QAforInt_MCEP_";
qaNameIntMCEP += type;
if (QA) { mgr->ConnectOutput(taskGFC,1,coutputQA1GFC);
mgr->ConnectOutput(taskGFC,2,coutputQA2GFC); }
}
+ if (QC) {
+ mgr->ConnectInput(taskQC,0,cinput1);
+ mgr->ConnectOutput(taskQC,0,coutputQC);
+ if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC);
+ mgr->ConnectOutput(taskQC,2,coutputQA2QC); }
+ }
if (MCEP) {
mgr->ConnectInput(taskMCEP,0,cinput1);
mgr->ConnectOutput(taskMCEP,0,coutputMCEP);
+++ /dev/null
-//RUN SETTINGS
-//analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1
-const TString type = "ESD";
-
-
-//SETTING THE CUTS
-
-//for integrated flow
-const Double_t ptmin1 = 0.0;
-const Double_t ptmax1 = 1000.0;
-const Double_t ymin1 = -2.;
-const Double_t ymax1 = 2.;
-const Int_t mintrackrefsTPC1 = 2;
-const Int_t mintrackrefsITS1 = 3;
-const Int_t charge1 = 1;
-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 ymin2 = -2.;
-const Double_t ymax2 = 2.;
-const Int_t mintrackrefsTPC2 = 2;
-const Int_t mintrackrefsITS2 = 3;
-const Int_t charge2 = 1;
-const Int_t PDG2 = 321;
-const Int_t minclustersTPC2 = 50;
-const Int_t maxnsigmatovertex2 = 3;
-
-
- void runProofCumulants(const Char_t* data="/PWG2/akisiel/LHC500C2030", Int_t nRuns=4, Int_t offset=0) {
- //void runProofCumulants(const Char_t* data="/PWG2/akisiel/LHC500C0005", Int_t nRuns=-1, Int_t offset=0){
-
- //void runProofCumulants(const Char_t* data="/PWG2/pganoti/Pythia6At10TeV_05T_b", Int_t nRuns=1000, Int_t offset=0){
- //void runProofCumulants(const Char_t* data="/PWG2/jgrosseo/sim_1600XX_esd", Int_t nRuns=-1, Int_t offset=0){
-
- //void runProofCumulants(const Char_t* data="/COMMON/COMMON/run15035_PbPb", Int_t nRuns=-1, Int_t offset=0){
-
- //void runProofCumulants(const Char_t* data="/PWG2/hricaud/LHC07f_160033DataSet", Int_t nRuns=-1, Int_t offset=0){
-
- //void runProofCumulants(const Char_t* data="/PWG2/hricaud/LHC07f_160038_root_archiveDataSet", Int_t nRuns=-1, Int_t offset=0){
-
- //void runProofCumulants(const Char_t* data="/PWG2/belikov/40825", Int_t nRuns=-1, Int_t offset=0){
-
-
-
- TStopwatch timer;
- timer.Start();
-
- printf("*** Connect to PROOF ***\n");
- TProof::Open("abilandz@lxb6046.cern.ch");
- //TProof::Open("snelling@localhost");
-
- gProof->UploadPackage("STEERBase.par");
- gProof->EnablePackage("STEERBase");
- gProof->UploadPackage("ESD.par");
- gProof->EnablePackage("ESD");
- gProof->UploadPackage("AOD.par");
- gProof->EnablePackage("AOD");
- gProof->UploadPackage("ANALYSIS.par");
- gProof->EnablePackage("ANALYSIS");
- gProof->UploadPackage("ANALYSISalice.par");
- gProof->EnablePackage("ANALYSISalice");
- gProof->UploadPackage("PWG2AOD.par");
- gProof->EnablePackage("PWG2AOD");
- gProof->UploadPackage("CORRFW.par");
- gProof->EnablePackage("CORRFW");
- gProof->ClearPackage("PWG2flow");
- gProof->UploadPackage("PWG2flow.par");
- gProof->EnablePackage("PWG2flow");
-
-
-
-//____________________________________________//
- //Create cuts using correction framework
-
- //############# cuts on MC
- AliCFTrackKineCuts* mcKineCuts1 = new AliCFTrackKineCuts("mcKineCuts1","MC-level kinematic cuts");
- mcKineCuts1->SetPtRange(ptmin1,ptmax1);
- mcKineCuts1->SetRapidityRange(ymin1,ymax1);
- mcKineCuts1->SetChargeMC(charge1);
-
- AliCFTrackKineCuts* mcKineCuts2 = new AliCFTrackKineCuts("mcKineCuts2","MC-level kinematic cuts");
- mcKineCuts2->SetPtRange(ptmin2,ptmax2);
- mcKineCuts2->SetRapidityRange(ymin2,ymax2);
- mcKineCuts2->SetChargeMC(charge2);
-
- AliCFParticleGenCuts* mcGenCuts1 = new AliCFParticleGenCuts("mcGenCuts1","MC particle generation cuts");
- mcGenCuts1->SetRequireIsPrimary();
- mcGenCuts1->SetRequirePdgCode(PDG1);
-
- AliCFParticleGenCuts* mcGenCuts2 = new AliCFParticleGenCuts("mcGenCuts2","MC particle generation cuts");
- mcGenCuts2->SetRequireIsPrimary();
- mcGenCuts2->SetRequirePdgCode(PDG2);
-
- //############# Acceptance Cuts ????????
- AliCFAcceptanceCuts *mcAccCuts = new AliCFAcceptanceCuts("mcAccCuts","MC acceptance cuts");
- mcAccCuts->SetMinNHitITS(mintrackrefsITS1);
- mcAccCuts->SetMinNHitTPC(mintrackrefsTPC1);
-
- //############# Rec-Level kinematic cuts
- AliCFTrackKineCuts *recKineCuts1 = new AliCFTrackKineCuts("recKineCuts1","rec-level kine cuts");
- recKineCuts1->SetPtRange(ptmin1,ptmax1);
- recKineCuts1->SetRapidityRange(ymin1,ymax1);
- recKineCuts1->SetChargeRec(charge1);
-
- AliCFTrackKineCuts *recKineCuts2 = new AliCFTrackKineCuts("recKineCuts2","rec-level kine cuts");
- recKineCuts2->SetPtRange(ptmin2,ptmax2);
- recKineCuts2->SetRapidityRange(ymin2,ymax2);
- recKineCuts2->SetChargeRec(charge2);
-
- AliCFTrackQualityCuts *recQualityCuts = new AliCFTrackQualityCuts("recQualityCuts","rec-level quality cuts");
- recQualityCuts->SetMinNClusterTPC(minclustersTPC1);
- recQualityCuts->SetRequireITSRefit(kTRUE);
-
- AliCFTrackIsPrimaryCuts *recIsPrimaryCuts = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
- recIsPrimaryCuts->SetMaxNSigmaToVertex(maxnsigmatovertex1);
-
- AliCFTrackCutPid* cutPID1 = new AliCFTrackCutPid("cutPID1","ESD_PID") ;
- AliCFTrackCutPid* cutPID2 = new AliCFTrackCutPid("cutPID2","ESD_PID") ;
- int n_species = AliPID::kSPECIES ;
- Double_t* prior = new Double_t[n_species];
-
- prior[0] = 0.0244519 ;
- prior[1] = 0.0143988 ;
- prior[2] = 0.805747 ;
- prior[3] = 0.0928785 ;
- prior[4] = 0.0625243 ;
-
- cutPID1->SetPriors(prior);
- cutPID1->SetProbabilityCut(0.0);
- cutPID1->SetDetectors("TPC TOF");
- switch(TMath::Abs(PDG1)) {
- case 11 : cutPID1->SetParticleType(AliPID::kElectron, kTRUE); break;
- case 13 : cutPID1->SetParticleType(AliPID::kMuon , kTRUE); break;
- case 211 : cutPID1->SetParticleType(AliPID::kPion , kTRUE); break;
- case 321 : cutPID1->SetParticleType(AliPID::kKaon , kTRUE); break;
- case 2212 : cutPID1->SetParticleType(AliPID::kProton , kTRUE); break;
- default : printf("UNDEFINED PID\n"); break;
- }
-
- cutPID2->SetPriors(prior);
- cutPID2->SetProbabilityCut(0.0);
- cutPID2->SetDetectors("TPC TOF");
- switch(TMath::Abs(PDG2)) {
- case 11 : cutPID2->SetParticleType(AliPID::kElectron, kTRUE); break;
- case 13 : cutPID2->SetParticleType(AliPID::kMuon , kTRUE); break;
- case 211 : cutPID2->SetParticleType(AliPID::kPion , kTRUE); break;
- case 321 : cutPID2->SetParticleType(AliPID::kKaon , kTRUE); break;
- case 2212 : cutPID2->SetParticleType(AliPID::kProton , kTRUE); break;
- default : printf("UNDEFINED PID\n"); break;
- }
-
- printf("CREATE MC KINE CUTS\n");
- TObjArray* mcList1 = new TObjArray(0);
- mcList1->AddLast(mcKineCuts1);
- mcList1->AddLast(mcGenCuts1);
-
- TObjArray* mcList2 = new TObjArray(0);
- mcList2->AddLast(mcKineCuts2);
- mcList2->AddLast(mcGenCuts2);
-
- printf("CREATE ACCEPTANCE CUTS\n");
- TObjArray* accList = new TObjArray(0) ;
- accList->AddLast(mcAccCuts);
-
- printf("CREATE RECONSTRUCTION CUTS\n");
- TObjArray* recList1 = new TObjArray(0) ;
- recList1->AddLast(recKineCuts1);
- recList1->AddLast(recQualityCuts);
- recList1->AddLast(recIsPrimaryCuts);
-
- TObjArray* recList2 = new TObjArray(0) ;
- recList2->AddLast(recKineCuts2);
- recList2->AddLast(recQualityCuts);
- recList2->AddLast(recIsPrimaryCuts);
-
- printf("CREATE PID CUTS\n");
- TObjArray* fPIDCutList1 = new TObjArray(0) ;
- fPIDCutList1->AddLast(cutPID1);
-
- TObjArray* fPIDCutList2 = new TObjArray(0) ;
- fPIDCutList2->AddLast(cutPID2);
-
-printf("CREATE INTERFACE AND CUTS\n");
- AliCFManager* cfmgr1 = new AliCFManager();
- cfmgr1->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList1);
- //cfmgr1->SetParticleCutsList(AliCFManager::kPartAccCuts,accList);
- cfmgr1->SetParticleCutsList(AliCFManager::kPartRecCuts,recList1);
- cfmgr1->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList1);
-
- AliCFManager* cfmgr2 = new AliCFManager();
- cfmgr2->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList2);
- //cfmgr2->SetParticleCutsList(AliCFManager::kPartAccCuts,accList);
- cfmgr2->SetParticleCutsList(AliCFManager::kPartRecCuts,recList2);
- cfmgr2->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList2);
-
-
-
-
- //____________________________________________//
- // Make the analysis manager
- AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
-
- if (type == "ESD"){
- AliVEventHandler* esdH = new AliESDInputHandler;
- //esdH->SetInactiveBranches("FMD CaloCluster"); //needed?
- mgr->SetInputEventHandler(esdH); }
-
- if (type == "AOD"){
- AliVEventHandler* aodH = new AliAODInputHandler;
- mgr->SetInputEventHandler(aodH); }
-
- if (type == "MC" || type == "ESDMC0" || type == "ESDMC1"){
- AliVEventHandler* esdH = new AliESDInputHandler;
- mgr->SetInputEventHandler(esdH);
-
- AliMCEventHandler *mc = new AliMCEventHandler();
- mgr->SetMCtruthEventHandler(mc); }
-
-
-
-
-
-
-
-
-
- //____________________________________________//
- // 1st Pt task
- AliAnalysisTaskCumulants *task1 = new AliAnalysisTaskCumulants("TaskCumulants");
- task1->SetAnalysisType(type);
- task1->SetCFManager1(cfmgr1);
- task1->SetCFManager2(cfmgr2);
- mgr->AddTask(task1);
-
-
- // Create containers for input/output
- AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
- TString outputName = "outputFromCumulantAnalysis";
- outputName+=type;
- outputName+=".root";
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,outputName);
-
- //added according to Andrei:
- //coutput1->SetSpecialOutput();
-
-
- //____________________________________________//
- mgr->ConnectInput(task1,0,cinput1);
- mgr->ConnectOutput(task1,0,coutput1);
-
- if (!mgr->InitAnalysis()) return;
- mgr->PrintStatus();
- // old way with a chain
- // mgr->StartAnalysis("proof",chain);
- mgr->StartAnalysis("proof",data,nRuns,offset);
-
- timer.Stop();
- timer.Print();
-}
// LYZ1 = Lee Yang Zeroes first run (for PbPb)
// LYZ2 = Lee Yang Zeroes second run (for PbPb)
// LYZEP = Lee Yang Zeroes Event Plane (for PbPb)
-// GFC = Cumulants (for PbPb or pp)
+// GFC = Cumulants (for PbPb or pp)
+// QC = Q-cumulants (for PbPb or pp)
// MCEP = Flow calculated from the real MC event plane (for PbPb only)
//
// The LYZ analysis should be done in the following order;
//RUN SETTINGS
//Flow analysis method 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 = kFALSE;
+Bool_t GFC = kTRUE;
+Bool_t QC = kTRUE;
Bool_t MCEP = kFALSE;
//analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1
if (GFC) {
TList* qaIntGFC = new TList();
TList* qaDiffGFC = new TList(); }
+ if (QC) {
+ TList* qaIntQC = new TList();
+ TList* qaDiffQC = new TList(); }
if (MCEP) {
TList* qaIntMCEP = new TList();
TList* qaDiffMCEP = new TList(); }
if (LYZ2) { mcKineCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcKineCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcKineCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcKineCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcKineCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcKineCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcKineCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcKineCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcKineCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcKineCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { mcGenCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcGenCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcGenCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcGenCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcGenCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcGenCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcGenCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcGenCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcGenCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcGenCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { mcAccCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ mcAccCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { mcAccCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { mcAccCuts1->SetQAOn(qaIntQC); }
if (MCEP) { mcAccCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { mcAccCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ mcAccCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { mcAccCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { mcAccCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { mcAccCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recKineCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recKineCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recKineCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recKineCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recKineCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recKineCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recKineCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recKineCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recKineCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recKineCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recQualityCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recQualityCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recQualityCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recQualityCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recQualityCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recQualityCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recQualityCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recQualityCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recQualityCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recQualityCuts2->SetQAOn(qaDiffMCEP); }
}
if (LYZ2) { recIsPrimaryCuts1->SetQAOn(qaIntLYZ2); }
if (LYZEP){ recIsPrimaryCuts1->SetQAOn(qaIntLYZEP); }
if (GFC) { recIsPrimaryCuts1->SetQAOn(qaIntGFC); }
+ if (QC) { recIsPrimaryCuts1->SetQAOn(qaIntQC); }
if (MCEP) { recIsPrimaryCuts1->SetQAOn(qaIntMCEP); }
}
if (LYZ2) { recIsPrimaryCuts2->SetQAOn(qaDiffLYZ2); }
if (LYZEP){ recIsPrimaryCuts2->SetQAOn(qaDiffLYZEP); }
if (GFC) { recIsPrimaryCuts2->SetQAOn(qaDiffGFC); }
+ if (QC) { recIsPrimaryCuts2->SetQAOn(qaDiffQC); }
if (MCEP) { recIsPrimaryCuts2->SetQAOn(qaDiffMCEP); }
}
if (GFC) {
cutPID1->SetQAOn(qaIntGFC);
cutPID2->SetQAOn(qaDiffGFC); }
+ if (QC) {
+ cutPID1->SetQAOn(qaIntQC);
+ cutPID2->SetQAOn(qaDiffQC); }
if (MCEP) {
cutPID1->SetQAOn(qaIntMCEP);
cutPID2->SetQAOn(qaDiffMCEP); }
taskGFC->SetQAList2(qaDiffGFC); }
mgr->AddTask(taskGFC);
}
+ if (QC){
+ if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE);}
+ else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE);}
+ taskQC->SetAnalysisType(type);
+ taskQC->SetCFManager1(cfmgr1);
+ taskQC->SetCFManager2(cfmgr2);
+ if (QA) {
+ taskQC->SetQAList1(qaIntQC);
+ taskQC->SetQAList2(qaDiffQC); }
+ mgr->AddTask(taskQC);
+ }
if (MCEP){
if (QA) { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kTRUE);}
else { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kFALSE);}
AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC);
}
+ if(QC) {
+ TString outputQC = "outputQCanalysis";
+ outputQC+= type;
+ outputQC+= ".root";
+ AliAnalysisDataContainer *coutputQC = mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC);
+ }
+
if(MCEP) {
TString outputMCEP = "outputMCEPanalysis";
outputMCEP+= type;
AliAnalysisDataContainer *coutputQA2GFC =
mgr->CreateContainer("QAdiffGFC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffGFC);
}
+ if(QC) {
+ TString qaNameIntQC = "QAforInt_QC_";
+ qaNameIntQC += type;
+ qaNameIntQC += ".root";
+ AliAnalysisDataContainer *coutputQA1QC =
+ mgr->CreateContainer("QAintQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntQC);
+
+ TString qaNameDiffQC = "QAforDiff_QC_";
+ qaNameDiffQC += type;
+ qaNameDiffQC += ".root";
+ AliAnalysisDataContainer *coutputQA2QC =
+ mgr->CreateContainer("QAdiffQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffQC);
+ }
if(MCEP) {
TString qaNameIntMCEP = "QAforInt_MCEP_";
qaNameIntMCEP += type;
if (QA) { mgr->ConnectOutput(taskGFC,1,coutputQA1GFC);
mgr->ConnectOutput(taskGFC,2,coutputQA2GFC); }
}
+ if (QC) {
+ mgr->ConnectInput(taskQC,0,cinput1);
+ mgr->ConnectOutput(taskQC,0,coutputQC);
+ if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC);
+ mgr->ConnectOutput(taskQC,2,coutputQA2QC); }
+ }
if (MCEP) {
mgr->ConnectInput(taskMCEP,0,cinput1);
mgr->ConnectOutput(taskMCEP,0,coutputMCEP);