TString GLOBAL_PLOTS_DIRECTORY = ""; Bool_t GLOBAL_DRAW_LEGEND = kFALSE; Int_t G_REPLACE_OLD = 1; Int_t G_SKIP_V2 = 1; // These are in bin numbers Int_t G_ETA_MAX = 20; Int_t G_ETA_MIN = 1; Int_t G_SKIP_FITCOS = 1; Int_t canvascounter = 0; Int_t G_DRAW_V2 = 1; TF2** GLOBAL_EFFICIENCY_FUNCTION_LIST = 0; Bool_t EFFICIENCY_HIST = kFALSE; Bool_t GDBG = kFALSE; Bool_t GWRONGEFF = kFALSE; Bool_t GNOPTWIDTH = kTRUE; Bool_t GNOPTWV2 = kFALSE; Int_t GDRAWEXAMPLES = -2; Bool_t PHENIXNORMALISATION = kFALSE; //TH1D* CorrectTPCBG(TH1D*, TH1D* ); void MJNHSWHistMaker(TString base ="TempLinkToCombineData_",Int_t cent0 = 9, Int_t cent1=-1,Int_t cent2=-1, Int_t cent3=-1, Int_t GPTFlag = 3) // AuAu RII CentralFF - GL { gStyle->SetOptDate(0); gStyle->SetGridStyle(0); gROOT->ForceStyle(); //Int_t cent[3] = {9,8,7}; //const Int_t Numcent = 3; Int_t tempcent =1; if (cent1==-1) { tempcent =1; } else if (cent2 == -1) { tempcent =2; } else if (cent3 == -1) { tempcent =3; } else { tempcent = 4; } const Int_t Numcent = tempcent; Int_t cent[Numcent]; for (Int_t cnt=0; cnt< Numcent; cnt++) { if (cnt == 0) cent[cnt] = cent0; if (cnt == 1) cent[cnt] = cent1; if (cnt == 2) cent[cnt] = cent2; if (cnt == 3) cent[cnt] = cent3; } PopulateEfficiencyList(Numcent, cent); TMinuit fitter; TString Estr = ""; TString pwd = gSystem->pwd(); if (pwd.Contains("pp") || pwd.Contains("dAu")) G_SKIP_V2 = 1; if (pwd.Contains("62")) Estr = "62"; if (pwd.Contains("200")) Estr = "200"; if (pwd.Contains("PHENIX") || pwd.Contains("PhiCutOnly")) PHENIXNORMALISATION = kTRUE; if (PHENIXNORMALISATION)cout <<"\n\n\n\n\t\tUSING PHENIX PHI NORMALISATION!!!\n\n\n"; TFile f(TString("data/CombSW_")+base+TString(".root")); if (! f.IsOpen() ) { cout << "Wrong file! -----> check that you are using the correct system file"<GetNumLists(); Int_t minTrigClass;// = DPhiList->GetNumLists(); if (maxTrigClass == 4) minTrigClass = 0; if (maxTrigClass != 4) minTrigClass = 2; cout <<"\n\n\n\n\t\tThere are "<At( GLOBAL_V2_BIN )))->Integral()); PHENIXweights[1] = 0.0;//Double_t(((TH2F*)(((*TrigSpecList)[1])->At( GLOBAL_V2_BIN )))->Integral()); Double_t temp = 0; for (Int_t counter = 0; counter < Numcent; counter++) { PHENIXweights[0] += Double_t(((TH2F*)(((*TrigSpecList)[0])->At( cent[counter] )))->Integral()); PHENIXweights[1] += Double_t(((TH2F*)(((*TrigSpecList)[1])->At( cent[counter] )))->Integral()); temp += Double_t(((TH2F*)(((*TrigSpecList)[trigclass])->At( cent[counter] )))->Integral()); } // Keep track of it for the case of bins being added ... TH1D* minsubtracted = (TH1D*)projx->Clone(projx->GetName()+TString("ForSpectraMin")); TH1D* maxsubtracted = (TH1D*)projx->Clone(projx->GetName()+TString("ForSpectraMax")); minsubtracted->Add((TH1D*)projxBGCorrMin,-1.0); maxsubtracted->Add((TH1D*)projxBGCorrMax,-1.0); mixedbincounter = temp; projxBGCorrRebinned->Scale(1.0/temp); projxBGCorr->Scale(1.0/temp); projxBGCorrMax->Scale(1.0/temp); projxBGCorrMin->Scale(1.0/temp); projx->Scale(1.0/temp); v2Yield->Scale(1.0/temp); ptweighted->Scale(1.0/temp); ptweightedMin->Scale(1.0/temp); ptweightedMax->Scale(1.0/temp); ptweightedn->Scale(1.0/temp); minsubtracted->Scale(1.0/temp); maxsubtracted->Scale(1.0/temp); ptweightedRaw->Scale(1.0/temp); ptweightedRawMin->Scale(1.0/temp); ptweightedRawMax->Scale(1.0/temp); if (trigclass - minTrigClass == 0) { assocptw2.Add((TH1D*)ShiftDPhi(ptweighted)); assocptw2Min.Add((TH1D*)ShiftDPhi(ptweightedMin)); assocptw2Max.Add((TH1D*)ShiftDPhi(ptweightedMax)); assocptwn2.Add((TH1D*)ShiftDPhi(ptweightedn)); assocptrebinnedstack2.Add((TH1D*)ShiftDPhi(projxBGCorrRebinned)); assocptstack2.Add((TH1D*)ShiftDPhi(projxBGCorr)); assocptstack2Max.Add((TH1D*)ShiftDPhi(projxBGCorrMax)); assocptstack2Min.Add((TH1D*)ShiftDPhi(projxBGCorrMin)); assocptstack2Raw.Add((TH1D*)ShiftDPhi(projx)); assocptstack2v2.Add((TH1D*)ShiftDPhi(v2Yield)); assocptstack2minspec.Add((TH1D*)ShiftDPhi(minsubtracted)); assocptstack2maxspec.Add((TH1D*)ShiftDPhi(maxsubtracted)); assocptw2Raw.Add((TH1D*)ShiftDPhi(ptweightedRaw)); assocptw2v2Min.Add((TH1D*)ShiftDPhi(ptweightedRawMin)); assocptw2v2Max.Add((TH1D*)ShiftDPhi(ptweightedRawMax)); } if (trigclass - minTrigClass == 1) { assocptw3.Add((TH1D*)ShiftDPhi(ptweighted)); assocptw3Min.Add((TH1D*)ShiftDPhi(ptweightedMin)); assocptw3Max.Add((TH1D*)ShiftDPhi(ptweightedMax)); assocptwn3.Add((TH1D*)ShiftDPhi(ptweightedn)); assocptstack3.Add((TH1D*)ShiftDPhi(projxBGCorr)); assocptrebinnedstack3.Add((TH1D*)ShiftDPhi(projxBGCorrRebinned)); assocptstack3Min.Add((TH1D*)ShiftDPhi(projxBGCorrMin)); assocptstack3Max.Add((TH1D*)ShiftDPhi(projxBGCorrMax)); assocptstack3Raw.Add((TH1D*)ShiftDPhi(projx)); assocptstack3v2.Add((TH1D*)ShiftDPhi(v2Yield)); assocptstack3minspec.Add((TH1D*)ShiftDPhi(minsubtracted)); assocptstack3maxspec.Add((TH1D*)ShiftDPhi(maxsubtracted)); // cout <<"Added to normal list ..."<At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXMin.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXMax.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwnPHENIX.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIX.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptrebinnedstackPHENIX.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXMax.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXMin.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXRaw.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXv2.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXminspec.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXmaxspec.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXRaw.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXv2Min.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXv2Max.GetHists())->At( ptassbin ))->Scale(PHENIXweights[trigclass - minTrigClass]); }else { ((TH1D*)((TList*)assocptwPHENIXRaw.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedRaw,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXv2Min.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedRawMin,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXv2Max.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedRawMax,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIX.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweighted,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXMin.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedMin,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXMax.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedMax,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwnPHENIX.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(ptweightedn,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIX.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(projxBGCorr,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptrebinnedstackPHENIX.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(projxBGCorrRebinned,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXMax.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(projxBGCorrMax,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXMin.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(projxBGCorrMin,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXRaw.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(projx,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXv2.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(v2Yield,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXminspec.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(minsubtracted,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptstackPHENIXmaxspec.GetHists())->At( ptassbin ))->Add((TH1D*)ShiftDPhi(maxsubtracted,"PHENIX"),PHENIXweights[trigclass - minTrigClass]); ((TH1D*)((TList*)assocptwPHENIXRaw.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwPHENIXv2Min.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwPHENIXv2Max.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwPHENIX.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwPHENIXMin.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwPHENIXMax.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptwnPHENIX.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIX.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptrebinnedstackPHENIX.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXMax.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXMin.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXRaw.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXv2.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXminspec.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); ((TH1D*)((TList*)assocptstackPHENIXmaxspec.GetHists())->At( ptassbin ))->Scale(1.0/(PHENIXweights[0]+PHENIXweights[1])); } } delete projxBGCorrRebinned; delete projxBGCorr; delete projxBGCorrMax; delete projxBGCorrMin; delete projx; delete v2Yield; delete ptweightedRaw; delete ptweightedRawMin; delete ptweightedRawMax; delete ptweighted; delete ptweightedMin; delete ptweightedMax; delete ptweightedn; } } //if(!G_SKIP_FITCOS){ TString filename = "data/"; filename += "HistStacks"; filename += "V2RemovedTest"; filename += "-Cent"; for (Int_t c = 0; c < Numcent ; c++) filename += cent[c]; filename += ".root"; TFile fout(filename,"RECREATE"); assocptwPHENIXRaw.Write(); assocptwPHENIXv2Min.Write(); assocptwPHENIXv2Max.Write(); assocptwPHENIX.Write(); assocptwPHENIXMin.Write(); assocptwPHENIXMax.Write(); assocptwnPHENIX.Write(); assocptstackPHENIX.Write(); assocptrebinnedstackPHENIX.Write(); assocptstackPHENIXMax.Write(); assocptstackPHENIXMin.Write(); assocptstackPHENIXRaw.Write(); assocptstackPHENIXv2.Write(); assocptstackPHENIXminspec.Write(); assocptstackPHENIXmaxspec.Write(); assocptw2Raw.Write(); assocptw2v2Min.Write(); assocptw2v2Max.Write(); assocptw2.Write(); assocptw2Min.Write(); assocptw2Max.Write(); assocptwn2.Write(); assocptstack2.Write(); assocptrebinnedstack2.Write(); assocptstack2Raw.Write(); assocptstack2v2.Write(); assocptstack2Min.Write(); assocptstack2Max.Write(); assocptw3Raw.Write(); assocptw3v2Min.Write(); assocptw3v2Max.Write(); assocptw3.Write(); assocptw3Min.Write(); assocptw3Max.Write(); assocptwn3.Write(); assocptstack3.Write(); assocptrebinnedstack3.Write(); assocptstack3Raw.Write(); assocptstack3v2.Write(); assocptstack3Min.Write(); assocptstack3Max.Write(); assocptw4v2Min.Write(); assocptw4v2Max.Write(); assocptw4Raw.Write(); assocptw4Min.Write(); assocptw4Max.Write(); assocptw4.Write(); assocptwn4.Write(); assocptstack4.Write(); assocptrebinnedstack4.Write(); assocptstack4Raw.Write(); assocptstack4v2.Write(); assocptstack4Min.Write(); assocptstack4Max.Write(); assocptw34Raw.Write(); assocptw34v2Min.Write(); assocptw34v2Max.Write(); assocptw34.Write(); assocptw34Min.Write(); assocptw34Max.Write(); assocptwn34.Write(); assocptstack34.Write(); assocptrebinnedstack34.Write(); assocptstack34Raw.Write(); assocptstack34v2.Write(); assocptstack34Min.Write(); assocptstack34Max.Write(); assocptstack2minspec.Write(); assocptstack2maxspec.Write(); assocptstack3minspec.Write(); assocptstack3maxspec.Write(); assocptstack34minspec.Write(); assocptstack34maxspec.Write(); assocptstack4minspec.Write(); assocptstack4maxspec.Write(); fout.Close(); //} //DrawList(assocptstack2.GetHists(),TString( "TC2CombinedAssocPartDists") ); //DrawList(assocptstack3.GetHists(),TString( "TC3CombinedAssocPartDists") ); //DrawList(assocptstack4.GetHists(),TString( "TC4CombinedAssocPartDists") ); //DrawList(assocptstack34.GetHists(),TString( "TC34CombinedAssocPartDists") ); } void PopulateEfficiencyList(const Int_t nCent, Int_t cent[]) { char *centString[15] = {"0-10% (ZDC)","0-5% (ZDC)","5-10% (ZDC)", "Minimum Bias 0-80% (Nch)","Minimum Bias All", "0-5% (Nch)","5-10% (Nch)","10-20% (Nch)", "20-30% (Nch)","30-40% (Nch)","40-60% (Nch)", "60-80% (Nch)","0-20% (Nch)","20-40% (Nch)","40-80% (Nch)"}; char centMap[15] = {'C','9','8','M','7','6','5','4','3','2','1','0','a','b','c'}; GLOBAL_EFFICIENCY_FUNCTION_LIST = new TF2*[nCent]; for (Int_t i=0; i < nCent; i++) { TString pwd = gSystem->pwd(); TString base; if (!pwd.Contains("RIV")) base = "../Efficiency/AuAuRII200GeV/StLowAndHighPt-PiMinus."; if (pwd.Contains("RIV")) base = "../Efficiency/AuAuRIV200GeV/St-Piminus."; TString mEfficiencyFileName = base; switch ( cent[i] ) { case 9: mEfficiencyFileName += 6; // 0-5% break; case 8: mEfficiencyFileName += 5; //5-10% break; case 7: mEfficiencyFileName += 4; //10-20% break; case 6: mEfficiencyFileName += 3; //20-30% break; case 5: mEfficiencyFileName += 2; //30-40% break; } // StLowAndHighPt-NewBins.63411ny.hist.root.Mark.Efficiency.root // mEfficiencyFileName +="3411ny.hist.root.efficiencyfcn.hist.root"; mEfficiencyFileName +="3411ny.hist.root.Mark.Efficiency.root"; //cout <<"\n\n\n\n USING ARTIFICIAL EFFICIENCY !!!!!!!!!! \n\n\n\n\n\n\n\n**************************\n\n\n\n**************************"; //mEfficiencyFileName +="1418ny.hist.root.efficiencyfcn.hist.root"; Int_t stat=0; TString fName = "f2dEfficiency"; TFile* file=0; if( pwd.Contains("SWdAu") || mEfficiencyFileName==""){ std::cout << "no efficiency file set " << std::endl; GLOBAL_EFFICIENCY_FUNCTION_LIST[i] = 0;// new TF2(TString("func")+i,"1.0"); } else{ file=new TFile(mEfficiencyFileName.Data()); if(!file ||!file->IsOpen()){ std::cout << "Cannot find efficiency file : " << mEfficiencyFileName << std::endl; } else{ mEfficiencyMap = (TF2*)file->Get(fName.Data()); delete file; } } if (pwd.Contains("SWdAu")) { }else { GLOBAL_EFFICIENCY_FUNCTION_LIST[i] = (TF2*)mEfficiencyMap->Clone(TString("Efficiency")+i); std::cout << "\tefficiency file : " << mEfficiencyFileName << std::endl; std::cout << "\tefficiency fcn title : " << mEfficiencyMap->GetTitle() << std::endl; } } for (Int_t counter = 0; counter < nCent; counter++) { cout <<"Double checking centrality:\ncounter "<GetTitle()<Eval(eta,pt)); } void MakeWeightedHist(TH1D &*answer, StMJNHListWrap* List, Int_t nCent, Int_t cent[],Int_t ptbin,Int_t trigclass) { //if (nCent != 3){ cout <<"\n\n\n\n\n\n\n\n\n\n\n THIS IS ALL WRONG!!!!!!!! \n\n\n\n\n\n\n\n\n\n"; } TH1D* projx; for (Int_t counter = 0; counter < nCent; counter++) { TH3F* Signal =((TH3F*)(((*List)[trigclass])->At( cent[counter] ))) ; TString projname = Signal->GetName(); projname +=trigclass; projname +=ptbin; projname +=cent[counter]; projname +=counter; ((TAxis*)Signal->GetYaxis())->SetRange(G_ETA_MIN,G_ETA_MAX); ((TAxis*)Signal->GetZaxis())->SetRange(ptbin,ptbin); projx = (TH1D*)Project3DEC(projname + ptbin +TString("-")+ ptbin + TString("_xe"),"",Signal,counter); if (counter ==0) answer = (TH1D* )projx->Clone(projx->GetName()+TString("CC")); if (counter !=0) answer->Add(projx); delete projx; } } void MakeHistsList(TH1D *&RawDist, TH1D *&v2Dist, TH1D *&subtractedDist, TH1D *&v2DistMax, TH1D *&v2DistMin, TH1D*& ptweighted, TH1D*& ptweightedMin,TH1D*& ptweightedMax, TH1D*& ptweightedn, TH1D*& ptweightedRaw, TH1D*& ptweightedRawMin,TH1D*& ptweightedRawMax, TH1D*& rebinned, StMJNHListWrap* SignalList, StMJNHListWrap* BackgroundList, StMJNHListWrap* TriggerList , Int_t Numcent, Int_t cent[], Int_t AssocLowBin,Int_t AssocHighBin,TString name, Int_t trigclass ) { // This is a tricky one but I checked it on 28/03/2005 and I think its all correct // Using Project3DEC defined later gives the TH1D* projection with the efficiency corrected for Float_t weightedv2, arb, pt, yieldtotal,ptweightedv2, ptwyield; ptwyield = weightedv2 = arb = pt = yieldtotal = ptweightedv2 = 0.0; TH1D* projx,*projxBG,*projxBGCorr,*v2Yield,*v2YieldMin,*v2YieldMax; TString assocstring = "temp"; MakeWeightedHist(projx,SignalList,Numcent,cent,AssocLowBin, trigclass); //(TH1D*)Project3DEC(projname + AssocLowBin +TString("-")+AssocHighBin + TString("_xe"),"",Signal); MakeWeightedHist(projxBG,BackgroundList,Numcent,cent,AssocLowBin, trigclass); //(TH1D*)Project3DEC(projname + AssocLowBin +TString("-")+AssocHighBin + TString("_xe"),"",Signal); // This corrects first bin projxBGCorr = (TH1D*)CorrectTPCBG(projx,projxBG); TString projname = "DPTC";//projxBGCorr->GetName(); projname+=trigclass; projname+="-"; projname+=AssocLowBin; projname+="-"; projname+=AssocHighBin; projxBGCorr->SetName(projname); ptweighted = (TH1D*)projxBGCorr->Clone(projname + TString("ptweighted") ); ptweightedn = (TH1D*)projxBGCorr->Clone(projname + TString("ptweightedn") ); pt = ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin); ptweighted->Scale(pt); //Setv2Details(pt,arb); Float_t ssstemp; Float_t ptwidth; ptwidth = ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinWidth(AssocLowBin); if (GNOPTWIDTH) ptwidth=1.0; Double_t effcorrectedyield = projxBGCorr->Integral()/ptwidth; Double_t sum_v2, sum; sum_v2 = sum = 0.; for (Int_t counter = 0; counter < Numcent; counter++) { Float_t tempv2 = pt; Setv2Details(tempv2,arb,ssstemp,cent[counter]); /// returns pt = v2 value sum_v2 += tempv2 * Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); sum += Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); } pt = sum_v2/sum; ptweightedn->Scale(1.0/ptwidth); ptweighted->Scale(1.0/ptwidth); ptwyield += effcorrectedyield * ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin); //Signal->GetZaxis()->GetBinCenter(AssocLowBin); weightedv2 += pt * effcorrectedyield; ptweightedv2 += pt * effcorrectedyield * ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin);//Signal->GetZaxis()->GetBinCenter(AssocLowBin); yieldtotal += effcorrectedyield; delete projx; delete projxBG; cout <<"Check :: First Bin will be :"<cd(1); t1->SetMinimum(t1->GetMinimum()*0.95); t1->SetMaximum(t1->GetMaximum()*1.05); t1->Draw(); c->cd(2); t2->SetMinimum(t2->GetMinimum()*0.95); t2->SetMaximum(t2->GetMaximum()*1.05); t2->Draw(); c->cd(3); tempptr->SetMinimum(tempptr->GetMinimum()*0.95); tempptr->SetMaximum(tempptr->GetMaximum()*1.05); tempptr->Draw(); c->SaveAs("supertest.gif"); GDRAWEXAMPLES=-1; delete c; } delete t1; delete t2; pt = ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin+corri); ptwidth = ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinWidth(AssocLowBin+corri); if (GNOPTWIDTH) ptwidth=1.0; if (GDBG) cout<<"Pt Bin Width is: "<Integral()/ptwidth; Double_t sum_v2, sum; sum_v2 = sum = 0.; for (Int_t counter = 0; counter < Numcent; counter++) { Float_t tempv2 = pt; Setv2Details(tempv2,arb,ssstemp,cent[counter]); /// returns pt = v2 value sum_v2 += tempv2 * Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); sum += Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); } pt = sum_v2/sum; weightedv2 += pt * effcorrectedyield; ptweightedv2 += pt * effcorrectedyield * ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin+corri);//Signal->GetZaxis()->GetBinCenter(AssocLowBin+corri); yieldtotal += effcorrectedyield; ptwyield += effcorrectedyield * ((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin+corri);//Signal->GetZaxis()->GetBinCenter(AssocLowBin+corri); projxBGCorr->Add(tempptr); ptweighted->Add(tempptr,(Float_t)((TH3F*)(((*SignalList)[trigclass])->At(9)))->GetZaxis()->GetBinCenter(AssocLowBin+corri)/ptwidth); ptweightedn->Add(tempptr,1.0/ptwidth); delete tempptr; } weightedv2 /= yieldtotal; ptweightedv2 /= ptwyield; if (GDBG)cout <<"Unwieghted v2 :" <Scale(1.0/projxBGCorr->GetBinWidth(1)); ptweighted->Scale(1.0/ptweighted->GetBinWidth(1)); ptweightedn->Scale(1.0/ptweighted->GetBinWidth(1)); ptweightedRaw = (TH1D*) ptweighted->Clone(ptweighted->GetName()+TString("Raw")); ptweightedRawMin = (TH1D*) ptweighted->Clone(ptweighted->GetName()+TString("RawMin")); ptweightedRawMax = (TH1D*) ptweighted->Clone(ptweighted->GetName()+TString("RawMax")); if (!GNOPTWV2){ ptweightedMin = (TH1D*)ptweighted->Clone(ptweighted->GetName()+TString("Min")); ptweightedMax = (TH1D*)ptweighted->Clone(ptweighted->GetName()+TString("Max")); Subv2(ptweighted,ptweightedv2,trigclass,Numcent,cent,TriggerList); Subv2(ptweightedMin,ptweightedv2,trigclass,Numcent,cent,TriggerList,"Min"); Subv2(ptweightedMax,ptweightedv2,trigclass,Numcent,cent,TriggerList,"Max"); } if (GNOPTWV2){cout <<"\n\n\n\n\n\n\n ARe you FUCKINBG INSANE!!!!!!\n\n\n\n\nDON'T DO IT !!!!!\n\n\n\n\n\n\n\nAAAAAARRRRRRRRGGGGGGGGHHHHHHHHH"; Subv2(ptweighted,weightedv2,trigclass);} Subv2(ptweightedn,weightedv2,trigclass,Numcent,cent,TriggerList); ptweightedRawMin->Add(ptweightedMin,-1.0); ptweightedRawMax->Add(ptweightedMax,-1.0); // Rebinned guy rebinned = (TH1D*)projxBGCorr->Clone(projxBGCorr->GetName()+TString("rebinned")); rebinned->Rebin(); rebinned->Scale(1.0/2.0); Subv2(rebinned, weightedv2 ,trigclass, Numcent,cent,TriggerList); v2Yield = (TH1D*)projxBGCorr->Clone(projxBGCorr->GetName()+TString("v2Yield")); Subv2(v2Yield, weightedv2 ,trigclass,Numcent,cent,TriggerList ); v2Yield->Scale(-1.0); v2Yield->Add(projxBGCorr,1.0); // Min v2YieldMin = (TH1D*)projxBGCorr->Clone(projxBGCorr->GetName()+TString("v2YieldMin")); Subv2(v2YieldMin, weightedv2, trigclass, Numcent,cent,TriggerList, "Min" ); v2YieldMin->Scale(-1.0); v2YieldMin->Add(projxBGCorr,1.0); //Max v2YieldMax = (TH1D*)projxBGCorr->Clone(projxBGCorr->GetName()+TString("v2YieldMax")); Subv2(v2YieldMax, weightedv2, trigclass, Numcent,cent,TriggerList, "Max" ); v2YieldMax->Scale(-1.0); v2YieldMax->Add(projxBGCorr,1.0); /* TH1D* newv2 = ShiftDPhi(v2Yield); delete v2Yield; v2Yield = newv2; newv2 = ShiftDPhi(v2YieldMin); delete v2YieldMin; v2YieldMin = newv2; newv2 = ShiftDPhi(v2YieldMax); delete v2YieldMax; v2YieldMax = newv2; RawDist = ShiftDPhi(projxBGCorr);*/ if (GDRAWEXAMPLES == -1) { TCanvas* c = new TCanvas("c","Examples"); projxBGCorr->SetMinimum(projxBGCorr->GetMinimum()*0.99); projxBGCorr->SetMaximum(projxBGCorr->GetMaximum()*1.01); projxBGCorr->Draw(); v2YieldMax->SetLineColor(kRed); v2YieldMin->SetLineColor(kBlue); v2Yield->SetLineColor(kGreen); v2Yield->Draw("same"); v2YieldMin->Draw("same"); v2YieldMax->Draw("same"); GDRAWEXAMPLES=-2; c->SaveAs("examples2.gif"); delete c; } RawDist = projxBGCorr; //delete projxBGCorr; RawDist->SetLineColor(kRed); if (projx) delete projx; if (projxBG) delete projxBG; for (Int_t cnt =1; cnt <= v2Yield->GetNbinsX(); cnt++) { v2Yield->SetBinError(cnt,0.000); v2YieldMax->SetBinError(cnt,0.000); v2YieldMin->SetBinError(cnt,0.000); } v2Dist = v2Yield; v2DistMax = v2YieldMax; v2DistMin = v2YieldMin; subtractedDist = (TH1D*)RawDist->Clone(RawDist->GetName()+TString("-v2removed")); subtractedDist->Add(v2Dist,-1.0); } Double_t MeanEfficiency(Double_t pt) { Double_t eff = GLOBAL_EFFICIENCY_FUNCTION->Integral(-1.,1.0,.98*pt,1.02*pt); eff /= 2.0*pt*.04; return 1.0/eff; } void Setv2Details(Float_t& v2passpt, Float_t& v2highpt, Float_t& scale, Int_t v2bin,TString minormax="") { // cout <<"Setting v2 value for cent:"<SetParameter(0,V2P1RP[v2bin]); scale = 2.0 * V2P1RP[v2bin]/(V2P1RP[v2bin]+V2P1_4[v2bin]); }else if (minormax == "Min") { v2pt->SetParameter(0,V2P1_4[v2bin]); scale = 2.0 * V2P1_4[v2bin]/(V2P1RP[v2bin]+V2P1_4[v2bin]); }else { v2pt->SetParameter(0,(V2P1RP[v2bin]+V2P1_4[v2bin])/2.0); scale=1.0; } v2highpt = V2HIGH[v2bin]; v2pt->SetParameter(1,V2P2[v2bin]); v2pt->SetParameter(2,V2P3[v2bin]); v2pt->SetParameter(3,V2P4[v2bin]); v2passpt = v2pt->Eval(pt); // This changes the pt value passed to the v2 value to be returned - this will // be a problem later and if anyone else ever uses this code :) } void Subv2(TH1D* hist,Float_t weightedv2, Int_t trigclass , Int_t Numcent, Int_t cent[], StMJNHListWrap* TriggerList,TString minormax ="") { // Checked 28/03/2005 // cout <<"Subtracting v2 ...."<Clone("NewV2Normalisation"); verytemphist->Smooth(2); minangle = 0.; // hist->GetBinCenter(hist->GetMinimumBin()); Float_t w=0.0; for (Int_t cnt= hist->GetXaxis()->FindBin(.8); cnt <= hist->GetXaxis()->FindBin(1.2); cnt++){ if (verytemphist->GetBinContent(cnt) < 1e-5) continue; min += verytemphist->GetBinContent(cnt); minangle += verytemphist->GetBinCenter(cnt)/verytemphist->GetBinContent(cnt); w += 1.0/verytemphist->GetBinContent(cnt); } min /= (hist->GetXaxis()->FindBin(1.2) - hist->GetXaxis()->FindBin(.8) + 1); minangle = 1.0; delete verytemphist; }else { minangle = hist->GetBinCenter(hist->GetMinimumBin()); min = hist->GetBinContent(hist->GetMinimumBin()); } hist->SetAxisRange(-1.0*TMath::Pi(),TMath::Pi()); // These parameterisations are for the case of: // (MRP+4PC)/2 // Scale to MRP for Min - i.e. minimum yield NOT minimum v2 // Scale to 4PC for Max - i.e. maximum yield NOT maximum v2 //cout <<"About to set v2highpt "<At( cent[counter] )))->Integral()) ; sum += Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); } v2highpt = sum_v2/sum; } if (trigclass == 1) { Float_t sum_v2 =0.0; Float_t sum =0.0; for (Int_t counter = 0; counter < Numcent; counter++) { tempv2highpt = 3.5; Setv2Details(tempv2highpt,v2highpt,factor,cent[counter],minormax); // get the highpt v2 value sum_v2 += tempv2highpt * Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()) ; sum += Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); } v2highpt = sum_v2/sum; } if (trigclass > 1) { Float_t sum_v2 =0.0; Float_t sum =0.0; for (Int_t counter = 0; counter < Numcent; counter++) { tempv2highpt = 3.5; Setv2Details(tempv2highpt,v2highpt,factor,cent[counter],minormax); // get the highpt v2 value sum_v2 += v2highpt * Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()) ; sum += Double_t(((TH2F*)(((*TriggerList)[trigclass])->At( cent[counter] )))->Integral()); } v2highpt = sum_v2/sum; } // cout <<" trigclass : "<< trigclass<<" v2highpt : "<pwd(); if (pwd.Contains("dAu")) { v2phi->SetParameter(0,v2highpt); v2phi->SetParameter(1,weightedv2); v2phi->SetParameter(2,0.0); // suppress the damn v2 !!!! }else { v2phi->SetParameter(0,v2highpt); v2phi->SetParameter(1,weightedv2); v2phi->SetParameter(2,factor); } Float_t p0 = (min /v2phi->Eval(minangle)) ; for (Int_t i = 1; i <= hist->GetNbinsX(); i++) { //hist->SetBinError(i, hist->GetBinContent(i) - p0 * v2phi->Eval(hist->GetBinCenter(i)) ) ; hist->SetBinContent(i, hist->GetBinContent(i) - p0 * v2phi->Eval(hist->GetBinCenter(i)) ) ; //hist->SetBinError(i, hist->GetBinContent(i) - p0 * v2phi->Eval(hist->GetBinCenter(i)) ) ; } delete v2phi; } void SubBG(TH1D* hist) { Double_t min = 0.0; min = hist->GetBinContent(hist->GetMinimumBin()); Double_t error = hist->GetBinError(hist->GetMinimumBin()); for(Int_t i = 1 ; i <= hist->GetNbinsX() ; i++) { hist->SetBinContent(i, (hist->GetBinContent(i) - min)); hist->SetBinError(i,TMath::Sqrt(TMath::Power(hist->GetBinError(i),2.0) + TMath::Power(error,2.0))); } } void AddOffset(TH1D* hist, Double_t offset=0.0) { Double_t error = hist->GetBinError(hist->GetMinimumBin()); for(Int_t i = 1 ; i <= hist->GetNbinsX() ; i++) { hist->SetBinContent(i, hist->GetBinContent(i) + offset); } } // my own efficiency correction code combined with the project code. TH1D* Project3DEC(TString name,TString title, TH3F* signal,Int_t cent) { Int_t zmax,zmin,ymax,ymin,xmin,xmax; zmax = signal->GetZaxis()->GetLast(); zmin = signal->GetZaxis()->GetFirst(); ymax = signal->GetYaxis()->GetLast(); ymin = signal->GetYaxis()->GetFirst(); xmax = signal->GetXaxis()->GetLast(); xmin = signal->GetXaxis()->GetFirst(); TH1D* proj = new TH1D(name,title,signal->GetXaxis()->GetNbins(),signal->GetXaxis()->GetXmin(),signal->GetXaxis()->GetXmax()); //cout <<"Projecting for efficiency:"<GetZaxis()->GetBinCenter(zbin); for (Int_t ybin = ymin; ybin<=ymax; ybin++) { Float_t eta = signal->GetYaxis()->GetBinCenter(ybin); Float_t effscale = (Float_t)Efficiency(pt,eta,cent); // evaluate efficiency at pt and eta if (zbin%10 && effscale==1.0) cout <<"\n\n\n**************************** Efficiency not implemented ************************\n\n\n"; // cout <<"Pt: "<SetBinContent(xbin, proj->GetBinContent(xbin)+ effscale * signal->GetBinContent(xbin,ybin,zbin)); proj->SetBinError(xbin, TMath::Sqrt(TMath::Power(proj->GetBinError(xbin),2.0)+TMath::Power(effscale * signal->GetBinError(xbin,ybin,zbin),2.0))); }// end xbin loop }// end ybin loop }// end zbin loop return proj; } TH1D* CorrectTPCBG(TH1D* hist, TH1D* histbg) { // I am concerned thta for some bins the BG statistics might be very low if ((Double_t)histbg->Integral() < 10000.) cout <<"Potential BG correciton problem"<GetTitle(); title += " Corrected;"; title += hist->GetXaxis()->GetTitle(); title += ";"; title += hist->GetYaxis()->GetTitle(); TString name = hist->GetName(); name += "Corrected"; TH1D* temp = hist->Clone(name); ; temp->SetDirectory(0); //temp->Sumw2(); Double_t mean = (Double_t)histbg->Integral(); mean = mean / (Double_t)histbg->GetNbinsX(); //cout <<"Mean : "<Divide(histbg); if (!PHENIXNORMALISATION) { temp->Scale(mean); } else { temp->Scale(histbg->GetMaximum()); } return temp; } TH1D* ShiftDPhi(TH1D* hist,TString extra="") { TString title = hist->GetTitle(); title += " Shifted;"; title += hist->GetXaxis()->GetTitle(); title += ";"; title += hist->GetYaxis()->GetTitle(); TString name = hist->GetName(); name += "Shifted"; name += extra; TAxis* original = hist->GetXaxis(); Double_t xmin,xmax; xmin = original->GetBinLowEdge(original->FindBin(-1.0)); xmin -= original->GetBinWidth(1); xmax = xmin + 2.0 * TMath::Pi(); TH1D* temp = new TH1D(name,title,hist->GetNbinsX(), xmin, xmax ); TAxis* newaxis = temp->GetXaxis(); temp->SetStats(0); for (Int_t i = 1 ; i <= hist->GetNbinsX() ; i++) { Double_t xval = original->GetBinCenter(i); if (xval < xmin) { xval = TMath::Pi() + TMath::Abs(xval+TMath::Pi()); } temp->Fill(xval,hist->GetBinContent(i)); temp->SetBinError( newaxis->FindBin(xval) ,hist->GetBinError(i)); } return temp; } TH1D* AbsDPhi(TH1D* hist,TString opt="") { TString title = hist->GetTitle(); title += " Absolute;"; title += hist->GetXaxis()->GetTitle(); title += ";"; title += hist->GetYaxis()->GetTitle(); TString name = hist->GetName(); name += "Absolute"; name += opt; TAxis* original = hist->GetXaxis(); TH1D* temp = new TH1D(name,title,24, 0., TMath::Pi() ); TAxis* newaxis = temp->GetXaxis(); temp->SetStats(0); /* for (Int_t i = 1 ; i <= hist->GetNbinsX() ; i++) { TMath maths; Double_t xval = original->GetBinCenter(i); cout << "Bin : "<< i<<" with error "<GetBinError(i) <<" Into new bin : "<FindBin(TMath::Abs(xval))<< "Bin has error: "<< temp->GetBinError(newaxis->FindBin(TMath::Abs(xval))) << " and new error will be "<< maths.Sqrt( TMath::Power(hist->GetBinError(i),2.0) + TMath::Power(temp->GetBinError(newaxis->FindBin(TMath::Abs(xval))),2.0)) <SetBinContent( newaxis->FindBin(TMath::Abs(xval)) , temp->GetBinContent( newaxis->FindBin(TMath::Abs(xval)) ) + hist->GetBinContent(i) ); temp->SetBinError( newaxis->FindBin(TMath::Abs(xval)) ,TMath::Sqrt(TMath::Power(hist->GetBinError(i),2.0) + TMath::Power(temp->GetBinError(newaxis->FindBin(TMath::Abs(xval))),2.0) )); cout <<"AFter setting error the error is :"<GetBinError(newaxis->FindBin(TMath::Abs(xval)))<GetBinCenter(i); // cout << "Bin : "<< i<<" with error "<GetBinError(i)<< " and " <GetBinError(44 - i + 1) <<" Into new bin : "<GetBinError(i) << " and new error will be "<< maths.Sqrt( TMath::Power(hist->GetBinError(i),2.0) + TMath::Power(hist->GetBinError(44-i+1),2.0)) <SetBinContent(25 - i , hist->GetBinContent(i) + hist->GetBinContent(48 - i +1) ); temp->SetBinError( 25 -i ,TMath::Sqrt(TMath::Power(hist->GetBinError(i),2.0) + TMath::Power(hist->GetBinError(48 -i +1),2.0) )); // cout <<"AFter setting error the error is :"<< temp->GetBinError(i)<cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->SetTitle(name+" "+hist->GetTitle()); hist->DrawCopy(opt); TString filename = namemangle(name,hist->GetName()); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TString name, TH1F* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->SetTitle(name+ " " +hist->GetTitle()); hist->DrawCopy(); TString filename = namemangle(name,hist->GetName()); filename+=".gif"; // filename +=hist->GetName(); // filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TString name, TH1D* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->SetTitle(name+ " " +hist->GetTitle()); hist->DrawCopy(); TString filename = namemangle(name,hist->GetName()); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TString name, TH2F* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->SetTitle(name+" "+hist->GetTitle()); hist->DrawCopy(); TString filename = namemangle(name,hist->GetName()); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TH1I* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->DrawCopy(); TString filename ="plots/"; filename +=hist->GetName(); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TH1D* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->DrawCopy(); TString filename ="plots/"; filename +=hist->GetName(); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TH1F* hist,Bool_t log =kFALSE,TString opt="E") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->DrawCopy(); TString filename ="plots/"; filename +=hist->GetName(); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } void DrawCanvas(TH2F* hist,Bool_t log =kFALSE,TString opt="") { TCanvas *c = new TCanvas(TString("Canvas")+canvascounter,"Canvas",400,400); c->cd(); if (log && hist->GetEntries() > 0) c->SetLogy(); canvascounter++; hist->DrawCopy(); TString filename ="plots/"; filename +=hist->GetName(); filename+=".gif"; c->SaveAs(filename.Data()); delete c; } TString namemangle(TString name, TString histname) { TString filename ="plots/"; filename +=histname; if ( name.Contains(TRegexp("123")) || name.Contains(TRegexp("456")) || name.Contains(TRegexp("789")) ) { TString filenameend = filename(TRegexp("m[ASN].+C")); filenameend.Chop(); filename = filename(TRegexp(".+m[SNA]")); filename.Chop(); filename.Chop(); filename += TString("C") + name(TRegexp("123"))+name(TRegexp("456"))+name(TRegexp("789")); filename+=filenameend; } return filename; } TString legendname(TString name) { TString leg = ""; if (name.Contains("TC0")) leg = "Trigger: 1.5-2.0GeV/c "; else if (name.Contains("TC1")) leg = "Trigger: 2.0-2.5GeV/c "; else if (name.Contains("TC2")) leg = "Trigger: 2.5-3.0GeV/c "; else if (name.Contains("TC3")) leg = "Trigger: 3.0-4.0GeV/c "; else if (name.Contains("TC4")) leg = "Trigger: 4.0-6.0GeV/c "; if (name.Contains("C0Added")) leg += "Cent 0 "; else if (name.Contains("C1Added")) leg += "Cent 1 "; else if (name.Contains("C2Added")) leg += "Cent 2 "; else if (name.Contains("C3Added")) leg += "Cent 3 "; else if (name.Contains("C4Added")) leg += "Cent 4 "; else if (name.Contains("C5Added")) leg += "Cent 5 "; else if (name.Contains("C6Added")) leg += "Cent 6 "; else if (name.Contains("C7Added")) leg += "Cent: 10-20% "; else if (name.Contains("C8Added")) leg += "Cent: 5-10% "; else if (name.Contains("C9Added")) leg += "Cent: 0-5% "; if (name.Contains("AssocBin0")) leg += "300-800MeV/c"; if (name.Contains("AssocBin1")) leg += "400-900MeV/c"; if (name.Contains("AssocBin2")) leg += "500-1000MeV/c"; if (name.Contains("AssocBin3")) leg += "600-1100MeV/c"; if (name.Contains("AssocBin4")) leg += "700-1200MeV/c"; if (name.Contains("AssocBin5")) leg += "800-1300MeV/c"; if (name.Contains("AssocBin6")) leg += "900-1400MeV/c"; if (name.Contains("AssocBin7")) leg += "1000-1500MeV/c"; if (name.Contains("AssocBin8")) leg += "1100-1600MeV/c"; if (name.Contains("AssocBin9")) leg += "1200-1700MeV/c"; if (name.Contains("AssocBin10")) leg += "1300-1800MeV/c"; if (name.Contains("AssocBin11")) leg += "1400-1900MeV/c"; if (name.Contains("AssocBin12")) leg += "1500-2000MeV/c"; if (name.Contains("AssocBin13")) leg += "500-1500MeV/c"; if (name.Contains("AssocBin14")) leg += "500-1250MeV/c"; if (name.Contains("AssocBin15")) leg += "700-2000MeV/c"; if (name.Contains("AssocBin16")) leg += "100-400MeV/c"; if (name.Contains("AssocBin17")) leg += "200-500MeV/c"; if (name.Contains("AssocBin18")) leg += "300-400MeV/c"; if (name.Contains("AssocBin19")) leg += "400-500MeV/c"; if (name.Contains("AssocBin20")) leg += "500-600MeV/c"; if (name.Contains("AssocBin21")) leg += "600-700MeV/c"; if (name.Contains("AssocBin22")) leg += "700-800MeV/c"; if (name.Contains("AssocBin23")) leg += "800-900MeV/c"; if (name.Contains("AssocBin24")) leg += "900-1000MeV/c"; if (name.Contains("AssocBin25")) leg += "1000-1100MeV/c"; if (name.Contains("AssocBin26")) leg += "1100-1200MeV/c"; if (name.Contains("AssocBin27")) leg += "1200-1300MeV/c"; if (name.Contains("AssocBin28")) leg += "1300-1400MeV/c"; if (name.Contains("AssocBin29")) leg += "1400-1500MeV/c"; if (name.Contains("AssocBin30")) leg += "1400-1600MeV/c"; if (name.Contains("AssocBin31")) leg += "150-4000MeV/c"; if (name.Contains("AssocBin32")) leg += "1000-2000MeV/c"; if (name.Contains("AssocBin33")) leg += "800-2000MeV/c"; if (name.Contains("AssocBin34")) leg += "2000-4000MeV/c"; if (name.Contains("AssocBin35")) leg+= "150 - 250 MeV/c"; if (name.Contains("AssocBin36")) leg+= "250 - 350 MeV/c"; if (name.Contains("AssocBin37")) leg+= "350 - 450 MeV/c"; if (name.Contains("AssocBin38")) leg+= "450 - 550 MeV/c"; if (name.Contains("AssocBin39")) leg+= "550 - 650 MeV/c"; if (name.Contains("AssocBin40")) leg+= "650 - 750 MeV/c"; if (name.Contains("AssocBin41")) leg+= "750 - 850 MeV/c"; if (name.Contains("AssocBin42")) leg+= "850 - 950 MeV/c"; if (name.Contains("AssocBin43")) leg+= "950 - 1050 MeV/c"; if (name.Contains("AssocBin44")) leg+= "1050 - 1150 MeV/c"; if (name.Contains("AssocBin45")) leg+= "1150 - 1250 MeV/c"; if (name.Contains("AssocBin46")) leg+= "1250 - 1350 MeV/c"; if (name.Contains("AssocBin47")) leg+= "1350 - 1450 MeV/c"; if (name.Contains("AssocBin48")) leg+= "1450 - 1550 MeV/c"; if (name.Contains("AssocBin49")) leg+= "1550 - 1650 MeV/c"; if (name.Contains("AssocBin50")) leg+= "1650 - 1750 MeV/c"; if (name.Contains("AssocBin51")) leg+= "1750 - 1850 MeV/c"; if (name.Contains("AssocBin52")) leg+= "1850 - 1950 MeV/c"; if (name.Contains("AssocBin53")) leg+= "1950 - 2200 MeV/c"; if (name.Contains("AssocBin54")) leg+= "2200 - 2400 MeV/c"; if (name.Contains("AssocBin55")) leg+= "2400 - 2600 MeV/c"; if (name.Contains("AssocBin56")) leg+= "2600 - 2800 MeV/c"; if (name.Contains("AssocBin57")) leg+= "2800 - 3000 MeV/c"; if (name.Contains("AssocBin58")) leg+= "3000 - 3200 MeV/c"; if (name.Contains("AssocBin59")) leg+= "3200 - 3400 MeV/c"; if (name.Contains("AssocBin60")) leg+= "3400 - 3600 MeV/c"; if (name.Contains("AssocBin61")) leg+= "3600 - 3800 MeV/c"; if (name.Contains("AssocBin62")) leg+= "3800 - 4000 MeV/c"; if (name.Contains("AssocBin63")) leg+= "4000 - 4200 MeV/c"; if (name.Contains("AssocBin64")) leg+= "4200 - 4400 MeV/c"; if (name.Contains("AssocBin65")) leg+= "4400 - 4600 MeV/c"; if (name.Contains("AssocBin66")) leg+= "4600 - 4800 MeV/c"; if (name.Contains("AssocBin67")) leg+= "4800 - 5000 MeV/c"; if (name.Contains("AssocBin68")) leg+= "5000 - 5200 MeV/c"; if (name.Contains("AssocBin69")) leg+= "5200 - 5400 MeV/c"; if (name.Contains("AssocBin70")) leg+= "5400 - 5600 MeV/c"; if (name.Contains("AssocBin71")) leg+= "5600 - 5800 MeV/c"; if (name.Contains("AssocBin72")) leg+= "5800 - 6000 MeV/c"; return leg; }