TString GetFormatFromDataSet(TString dataset) { // Info("runAAF.C","Detecting format from dataset (may take while, depends on network connection)..."); TString dsTreeName; if (dataset.Contains("#")) { Info("runAAF.C",Form("Detecting format from dataset name '%s' ...",dataset.Data())); dsTreeName=dataset(dataset.Last('#'),dataset.Length()); } else { Info("runAAF.C",Form("Detecting format from dataset '%s' (may take while, depends on network connection) ...",dataset.Data())); TFileCollection *ds = gProof->GetDataSet(dataset.Data()); if (!ds) { Error(Form("Dataset %s doesn't exist on proof cluster!!!!",dataset.Data())); return ""; } dsTreeName = ds->GetDefaultTreeName(); } if (dsTreeName.Contains("esdTree")) { Info("runAAF.C","ESD input format detected ..."); return "ESD"; } else if (dsTreeName.Contains("aodTree")) { Info("runAAF.C","AOD input format detected ..."); return "AOD"; } else { Error("runAAF.C",Form("Tree %s is not supported !!!",dsTreeName.Data())); Error("runAAF.C",Form("Maybe set your DS to %s#esdTree or %s#aodTree",dataset.Data(),dataset.Data())); } return ""; }
//_____________________________________________________________________________ Int_t ProofSimple::GetHistosFromFC(TCanvas *cv) { // Check for the histograms in the files of a possible TFileCollection TIter nxo(fOutput); TFileCollection *fc = 0; Bool_t fc_found = kFALSE, hs_found = kFALSE; while ((fc = (TFileCollection *) nxo())) { if (strcmp(fc->ClassName(), "TFileCollection")) continue; fc_found = kTRUE; if (!fHist) { fHist = new TH1F*[fNhist]; for (Int_t i = 0; i < fNhist; i++) { fHist[i] = 0; } } else { for (Int_t i = 0; i < fNhist; i++) { SafeDelete(fHist[i]); } } // Go through the list of files TIter nxf(fc->GetList()); TFileInfo *fi = 0; while ((fi = (TFileInfo *) nxf())) { TFile *f = TFile::Open(fi->GetCurrentUrl()->GetUrl()); if (f) { for (Int_t i = 0; i < fNhist; i++) { TString hn = TString::Format("h%d", i); TH1F *h = (TH1F *) f->Get(hn); if (h) { hs_found = kTRUE; if (!fHist[i]) { fHist[i] = (TH1F *) h->Clone(); fHist[i]->SetDirectory(0); } else { fHist[i]->Add(h); } } else { Error("GetHistosFromFC", "histo '%s' not found in file '%s'", hn.Data(), fi->GetCurrentUrl()->GetUrl()); } } f->Close(); } else { Error("GetHistosFromFC", "file '%s' could not be open", fi->GetCurrentUrl()->GetUrl()); } } if (hs_found) break; } if (!fc_found) return -1; if (!hs_found) return -1; for (Int_t i = 0; i < fNhist; i++) { cv->cd(i+1); if (fHist[i]) { fHist[i]->DrawCopy(); } } Info("GetHistosFromFC", "histograms read from %d files in TFileCollection '%s'", fc->GetList()->GetSize(), fc->GetName()); // Done return 0; }
void runProofFwdDetsQA(const char * dataset = "/COMMON/COMMON/LHC09a4_run8101X",Long64_t nentries=100000, Long64_t firstentry=0) { gSystem->Load("libANALYSIS"); gSystem->Load("libANALYSISalice"); gSystem->AddIncludePath("-I$ALICE_ROOT/include"); // Connect to Proof gEnv->SetValue("XSec.GSI.DelegProxy","2"); TProof::Open("cheshkov:PWG0@alicecaf"); // Upload and enable packages: please use the correct version! gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-16-Release/AF-v4-16"); gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-16-Release/AF-v4-16"); // Create the analysis manager AliAnalysisManager *mgr = new AliAnalysisManager("AliAnaFwdDetsQA"); AliVEventHandler* esdH = new AliESDInputHandler(); mgr->SetInputEventHandler(esdH); // Enable MC event handler AliVEventHandler* handler = new AliMCEventHandler; mgr->SetMCtruthEventHandler(handler); // Create task gProof->Load(Form("%s/PWGPP/AliAnaFwdDetsQA.cxx++g", gSystem->Getenv("ALICE_ROOT"))); AliAnalysisTask *task = new AliAnaFwdDetsQA("AliAnaFwdDetsQA"); // Add task mgr->AddTask(task); // Create containers for input/output AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); AliAnalysisDataContainer *coutput = mgr->CreateContainer("coutput", TList::Class(), AliAnalysisManager::kOutputContainer, "FwdDetsQA.root"); // Connect input/output mgr->ConnectInput(task, 0, cinput); mgr->ConnectOutput(task, 1, coutput); // Enable debug printouts mgr->SetDebugLevel(3); if (!mgr->InitAnalysis()) return; mgr->PrintStatus(); TFileCollection *proofColl = gProof->GetDataSet(dataset); TChain *chain = new TChain("esdTree"); chain->AddFileInfoList((TCollection*)(proofColl->GetList())); mgr->StartAnalysis("proof", chain, nentries, firstentry); // mgr->StartAnalysis("proof",dataset,nentries,firstentry); }
void TestPeacVerifier() { // gSystem->Load("libPeacUtils.so"); // TProof *p = TProof::Open("skaf.saske.sk:1099","workers=1x"); // TProof *p = TProof::Open("skaf.saske.sk","workers=1x"); TProof *p = TProof::Open("alice-caf.cern.ch", "workers=1x"); p->UploadPackage("../pars/PeacUtils"); if (p->EnablePackage("PeacUtils")) return; // TProofNodes pn(p); // TMap *filesmap = new TMap; // TMap *nodesmap = pn.GetMapOfNodes(); // // TIter nxnd(nodesmap); // TList *wli = 0; // TObject *obj = 0; // Int_t kf = 1; // while ((obj = nxnd()) != 0) { // if ((wli = dynamic_cast<TList *>(nodesmap->GetValue(obj)))) { // THashList *fli = new THashList; // Int_t nf = wli->GetSize(); // TSlaveInfo *wi = (TSlaveInfo *) wli->First(); // Printf("WK: %s",wi->GetName()); // fli->Add(new TObjString(wi->GetName())); // filesmap->Add(new TObjString(obj->GetName()), fli); // } // } // // filesmap->SetName("PROOF_FilesToProcess"); // p->AddInput(filesmap); // TFileCollection *coll = p->GetDataSet("myDS"); // TFileCollection *coll = p->GetDataSet("myBigDS"); TFileCollection *coll = p->GetDataSet("/PWG2/mvala/LHC11a_000146805_p4_with_SDD"); TFileCollection *coll = p->GetDataSet("/PWG2/mvala/myDSNew"); if (!coll) return; coll->SetName("PROOF_PEAC_FileCollectionIn"); p->AddInput(coll); // p->SetParameter("PROOF_Packetizer", "TPacketizerFile"); // p->SetParameter("PROOF_ProcessNotAssigned", (Int_t)1); p->SetParameter("PROOF_Packetizer", "TPacketizerUnit"); // p->SetParameter("PROOF_ProcessNotAssigned", (Int_t)1); p->SetParameter("PROOF_UseMergers", "-1"); TStopwatch timer; timer.Start(); p->Process("TPeacVerifierSel", (Long64_t) 57); timer.Stop(); timer.Print(); }
void runLocal(TString dataset, TString treename = "", Long64_t nentries=TChain::kBigNumber, Long64_t firstentry = 0) { ProofAna* ana = new ProofAna(); //Need to provide a TList for local running TList* list = new TList(); ana->SetInputList(list); // Load dataset manager stuff, uses same local datasets as PROOF-Lite by design TString defaultdir(gSystem->HomeDirectory()); defaultdir.Append("/.proof"); TString dsetdir(gEnv->GetValue("ProofLite.Sandbox",defaultdir.Data())); dsetdir.Append("/datasets"); dsetdir.Prepend("dir:"); TDataSetManagerFile mgr(dsetdir); TString dsetfile(dataset); dsetfile.Append(".txt"); dsetfile.Prepend("../filelists/"); //Register dataset, if non-existent if(!mgr.ExistsDataSet(dataset)) { TFileCollection* dset = new TFileCollection(dataset,"",dsetfile); mgr.RegisterDataSet(dataset,dset,"V"); //This seems to return true regardless of success or failure at the moment if(treename.CompareTo("")!=0) { cout << "Setting default tree to " << treename << " (local and lite running)" << endl; TProof* lite = TProof::Open("lite://"); if(lite->SetDataSetTreeName(dataset,treename)) { cout << "Failure to set default tree to " << treename << endl; return; } delete lite; } } mgr.ShowDataSets(); // And yes, all this dataset garbage was to get the default tree name TFileCollection* dset = mgr.GetDataSet(dataset); TString defaultTree = dset->GetDefaultTreeName(); // Make TChain from TFileCollection...doesn't seem like there is a more direct way if(defaultTree.First("/")==0) defaultTree.Remove(0,1); TChain* T = new TChain(defaultTree); TList* filelist = (TList*)dset->GetList(); TIter next(filelist); TFileInfo* fileinfo = 0; while ((fileinfo = (TFileInfo*)next())) T->AddFile(fileinfo->GetCurrentUrl()->GetUrl()); // Process TChain T->Process(ana,"", nentries, firstentry); }
void TFileCollection::MergeFiles(const TFileCollection& files) { for (size_t i = 0; i < files.Size(); ++i) Merge(files[i]); if (files.Maximized) Maximized = true; }
//________________________________________________________________ void runAAF(Int_t nFilesMax, char* type, char* textFileName, Int_t task) { Int_t analysisMC = 0; Bool_t debug = kTRUE; Bool_t readTR = kFALSE; Bool_t esdAna = kTRUE; // run ESD analysis (kTRUE) or AOD analysis (kFALSE) Int_t runtype = -1; if(strstr(type,"aod") != NULL) { esdAna = kFALSE;; // AOD analysis cout << "Performing AOD analysis" << endl; } else cout << "Performing ESD analysis" << endl; const Char_t* treeName = GetTreeName(esdAna); if(strstr(type,"PbPb") != NULL) runtype = 2; // PbPb if(strstr(type,"pp") != NULL) runtype = 3; // pp if(strstr(type,"900") != NULL){ // 900GeV pp if(runtype != -1){ printf("conflicting run types\n"); return; } runtype = 1; } if(runtype == -1) runtype = 0; // 7TeV pp char *test; test = strstr(type,"MC"); if(test != NULL){ analysisMC = kTRUE; cout << "Test: " << test << endl; if(sscanf(test,"MC%d",&analysisMC)){ // cout << "**************" << analysisMC << endl; if(!analysisMC) analysisMC = 1; } } cout << "MonteCarlo " << analysisMC << endl; const char* alirootver = "v5-02-17-AN"; Int_t mode = -1; // mode 1: PROOF, 2: GRID, 0: LOCAL printf("===================================================================\n"); if(strstr(type,"proof") != NULL){ if(mode != -1){ printf("===== CONFLICTING TYPES =====\n"); return; } mode = 1; printf("=============== RUNNING ANALYSIS IN CAF MODE ================\n"); } if(strstr(type,"grid") != NULL){ if(mode != -1){ printf("===== CONFLICTING TYPES =====\n"); return; } printf("=============== RUNNING ANALYSIS IN GRID MODE ================\n"); mode = 2; } if(strstr(type,"local") != NULL || mode<0){ if(mode != -1){ printf("===== CONFLICTING TYPES =====\n"); return; } printf("=============== RUNNING ANALYSIS IN LOCAL MODE ================\n"); mode = 0; } printf("===================================================================\n"); printf("===================================================================\n"); if (analysisMC) printf(":: use MC TRUE\n"); else printf(":: use MC FALSE\n"); if (readTR) printf(":: read TR TRUE\n"); else printf(":: read TR FALSE\n"); if (debug) printf(":: debugging TRUE\n"); else printf(":: debugging FALSE\n"); Char_t taskname[128]; switch(task){ case 1: sprintf(taskname,"HighPtDeDxCosmic"); break; case 2: sprintf(taskname,"HighPtDeDx"); break; case 3: sprintf(taskname,"HighPtDeDxV0"); break; case 4:{ sprintf(taskname,"EffDecomposition"); } break; default: printf("Unknown task\n"); return; } Char_t nameouputfiles[1280]={0}; if(runtype ==2){ for(Int_t i=0;i<6;++i){ //Char_t tmpname[128]={0}; sprintf(nameouputfiles,"%s %s_Tree_%1.0f_%1.0f.root",nameouputfiles,taskname,minCent[i],maxCent[i]); } } if(runtype ==3){ sprintf(nameouputfiles,"%s %s_Tree.root",taskname); } cout<<"Files to be stored:"<<nameouputfiles<<endl; // Load common libraries gSystem->Load("libTree.so"); gSystem->Load("libPhysics.so"); gSystem->Load("libGeom.so"); gSystem->Load("libVMC.so"); gSystem->Load("libSTEERBase.so"); gSystem->Load("libESD.so"); gSystem->Load("libAOD.so"); gSystem->Load("libCDB.so"); gSystem->Load("libANALYSIS.so"); gSystem->Load("libANALYSISalice.so"); // tender gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT"))); cout << "mode " << mode << ", type " << type << endl; if (mode == 1){ cout << "Connecting to CAF..." << endl; gEnv->SetValue("XSec.GSI.DelegProxy","2"); //const char* AAF = "*****@*****.**"; const char* AAF = "*****@*****.**"; if(strstr(type,"reset") != NULL) TProof::Reset(AAF,kFALSE); // TProof::Reset("*****@*****.**",kTRUE); // TProof::Open(AAF); TProof::Open(AAF, "workers=10"); TList *list = new TList(); list->Add(new TNamed("ALIROOT_EXTRA_LIBS", "CDB")); gProof->EnablePackage(Form("VO_ALICE@AliRoot::%s",alirootver), list); cout << "Connected to " << AAF << endl; } // Load the analysis macro (old version); should be removed when the library will be decided Char_t loadtask[128]; if(task==4) { sprintf(loadtask,"AliAnaTaskV0%s.cxx++", taskname); }else{ sprintf(loadtask,"AliAnalysisTask%s.cxx++", taskname); } if(mode == 1){ // PROOF // switch(task){ // case 1: // ch fluct // break; // case 2: // high pt dedx //gProof->Load("DebugClasses.C++g"); // break; // case 3: // high pt v0s // gProof->Load("DebugClasses.C++g"); // break; // default: // printf("Unknown task\n"); // return; // } gProof->Load(loadtask); }else{ if(task==2) { cout << "Analysis task is loaded with AliRoot" << endl; } else { gROOT->LoadMacro(loadtask); } } // Make the analysis manager AliAnalysisManager* mgr = new AliAnalysisManager("PID histos", "testing analysis"); // Dataset switch(mode){ case 1: // PROOF TFileCollection* proofColl = gProof->GetDataSet(textFileName); TFileCollection* stagedColl = proofColl->GetStagedSubset(); TChain* chain = CreateChainCAF(nFilesMax, stagedColl, treeName); // TChain* chain = CreateChainCAF(nFilesMax, textFileName, treeName, analysisMC); break; case 2: // GRID //gSystem->Setenv("alien_CLOSE_SE", "ALICE::GSI::SE2"); // gSystem->Setenv("alien_CLOSE_SE", "ALICE::NIHAM::FILE"); TGrid::Connect("alien://"); //gSystem->Setenv("alien_CLOSE_SE", "ALICE::GSI::SE2"); // gSystem->Setenv("alien_CLOSE_SE", "ALICE::NIHAM::FILE"); Char_t gridmode[64]; sprintf(gridmode, "full"); if(strstr(type,"term") != NULL) sprintf(gridmode, "terminate"); if(strstr(type,"off") != NULL) sprintf(gridmode, "offline"); if(strstr(type,"sub") != NULL) sprintf(gridmode, "submit"); if(strstr(type,"test") != NULL) sprintf(gridmode, "test"); gROOT->LoadMacro("CreateAlienHandler.C"); // AliAnalysisGrid *alienHandler = CreateAlienHandler(nFilesMax, analysisMC, runtype, taskname, gridmode); AliAnalysisGrid *alienHandler = CreateAlienHandler(nFilesMax, analysisMC, esdAna, taskname, nameouputfiles, gridmode, textFileName, alirootver, task); if (!alienHandler) return; // DOES NOT WORK BECAUSE THERE ARE NO GETTERS? // // Here we can add extra files to the plugin // switch(task){ // case 1: // ch fluct // break; // case 2: // high pt dedx // alienHandler->SetAnalysisSource(Form("DebugClasses.C %s", alienHandler->GetAnalysisSource())); // alienHandler->SetAdditionalLibs(Form("DebugClasses.C %s", alienHandler->GetAdditionalLibs())); // break; // case 3: // high pt v0s // alienHandler->SetAnalysisSource(Form("DebugClasses.C %s", alienHandler->GetAnalysisSource())); // alienHandler->SetAdditionalLibs(Form("DebugClasses.C %s", alienHandler->GetAdditionalLibs())); // break; // default: // printf("Unknown task\n"); // return; // } // Connect plugin to the analysis manager mgr->SetGridHandler(alienHandler); break; case 0: // LOCAL // Process data - chain AliXRDPROOFtoolkit tool; TChain* chain = tool.MakeChain(textFileName,treeName, 0, 100); chain->Lookup(); break; default: printf("Unknown mode"); return; } // ESD input handler if(esdAna) { AliESDInputHandler *esdHandler = new AliESDInputHandler(); mgr->SetInputEventHandler(esdHandler); } else { AliAODInputHandler* aodHandler = new AliAODInputHandler(); mgr->SetInputEventHandler(aodHandler); } // Monte Carlo handler if (analysisMC) { AliMCEventHandler* mcHandler = new AliMCEventHandler(); if(esdAna) mgr->SetMCtruthEventHandler(mcHandler); mcHandler->SetReadTR(readTR); } // Debug if needed if (debug) mgr->SetDebugLevel(3); // ######### Centrality task ############### cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"<<endl; cout<<"esdAna="<<esdAna<<" runtype="<<runtype<<endl; // ######### PHYSICS SELECTION ############### if (esdAna) { // PC: 17/8-15: this does not work for AODs..... cout << "Adding task physics selection" << endl; gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(); if (analysisMC) { AliPhysicsSelection* physSel = physSelTask->GetPhysicsSelection(); physSel->SetAnalyzeMC(); } } if(esdAna && runtype==2) { // only for ESD and PbPb gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C"); AliCentralitySelectionTask *taskCentrality = AddTaskCentrality(); //taskCentrality->SetPass(2); if (analysisMC) taskCentrality->SetMCInput(); } // ######### PID task ############### if(task == 2) { cout << "Loading macro in AliRoot!" << endl; gROOT->LoadMacro("$ALICE_PHYSICS/PWGLF/SPECTRA/IdentifiedHighPt/train/macros/AddTask.C"); cout << "Adding task!" << endl; AliAnalysisTask* taskPid = AddTask(analysisMC, taskname, runtype, kTriggerInt, minCent, maxCent); } else { cout << "Adding AliAnaTaskV0EffDecomposition" << endl; gROOT->LoadMacro("AddTask.C"); AliAnalysisTask* taskPid = AddTask(taskname); } // Run the analysis if (mgr->InitAnalysis()){ mgr->PrintStatus(); switch(mode){ case 1: // PROOF mgr->StartAnalysis("proof",chain); break; case 2: // GRID mgr->StartAnalysis("grid"); break; case 0: mgr->StartAnalysis("local",chain); break; default: printf("Unknown mode\n"); return; } } }
TFileCollection* loadChunks(char chunk, TString protocol, TString dirname, TString datasetName, TString beautiful) { TFileCollection* c = new TFileCollection(beautiful+chunk,beautiful+chunk); //DYM20 EE if (beautifulDataset(datasetName) == "EEDYM20") { switch (chunk) { case '1': c->Add(protocol+dirname+datasetName+"/ntuple_skim_10*.root"); break; case '2': c->Add(protocol+dirname+datasetName+"/ntuple_skim_11*.root"); break; case '3': c->Add(protocol+dirname+datasetName+"/ntuple_skim_12*.root"); break; case '4': c->Add(protocol+dirname+datasetName+"/ntuple_skim_13*.root"); break; case '5': c->Add(protocol+dirname+datasetName+"/ntuple_skim_14*.root"); break; case '6': c->Add(protocol+dirname+datasetName+"/ntuple_skim_15*.root"); break; case '7': c->Add(protocol+dirname+datasetName+"/ntuple_skim_16*.root"); break; case '8': c->Add(protocol+dirname+datasetName+"/ntuple_skim_17*.root"); break; case '9': c->Add(protocol+dirname+datasetName+"/ntuple_skim_18*.root"); break; case '10': c->Add(protocol+dirname+datasetName+"/ntuple_skim_19*.root"); break; case '11': c->Add(protocol+dirname+datasetName+"/ntuple_skim_1_*.root"); break; default: cout << "Wrong chunk" << endl; break; } //DYM20 MuMu } else if (beautifulDataset(datasetName) == "DYM20") { switch (chunk) { case '1': c->Add(protocol+dirname+datasetName+"/ntuple_skim_10*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_20*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_30*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_40*.root"); break; case '2': c->Add(protocol+dirname+datasetName+"/ntuple_skim_11*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_21*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_31*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_41*.root"); break; case '3': c->Add(protocol+dirname+datasetName+"/ntuple_skim_12*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_22*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_32*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_42*.root"); break; case '4': c->Add(protocol+dirname+datasetName+"/ntuple_skim_13*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_23*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_33*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_43*.root"); break; case '5': c->Add(protocol+dirname+datasetName+"/ntuple_skim_14*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_24*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_34*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_44*.root"); break; case '6': c->Add(protocol+dirname+datasetName+"/ntuple_skim_15*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_25*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_35*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_45*.root"); break; case '7': c->Add(protocol+dirname+datasetName+"/ntuple_skim_16*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_26*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_36*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_46*.root"); break; case '8': c->Add(protocol+dirname+datasetName+"/ntuple_skim_17*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_27*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_37*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_47*.root"); break; case '9': c->Add(protocol+dirname+datasetName+"/ntuple_skim_18*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_28*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_38*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_48*.root"); break; case '10': c->Add(protocol+dirname+datasetName+"/ntuple_skim_19*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_29*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_39*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_49*.root"); break; case '11': c->Add(protocol+dirname+datasetName+"/ntuple_skim_1_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_2_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_3_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_4_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_5*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_6*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_7*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_8*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_9*.root"); break; default: cout << "Wrong chunk" << endl; break; } } else if (beautifulDataset(datasetName) == "DYM1020" || beautifulDataset(datasetName) == "EEDYM1020") { switch (chunk) { case '1': c->Add(protocol+dirname+datasetName+"/ntuple_skim_10*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_20*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_30*.root"); break; case '2': c->Add(protocol+dirname+datasetName+"/ntuple_skim_11*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_21*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_31*.root"); break; case '3': c->Add(protocol+dirname+datasetName+"/ntuple_skim_12*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_22*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_32*.root"); break; case '4': c->Add(protocol+dirname+datasetName+"/ntuple_skim_13*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_23*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_33*.root"); break; case '5': c->Add(protocol+dirname+datasetName+"/ntuple_skim_14*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_24*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_34*.root"); break; case '6': c->Add(protocol+dirname+datasetName+"/ntuple_skim_15*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_25*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_35*.root"); break; case '7': c->Add(protocol+dirname+datasetName+"/ntuple_skim_16*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_26*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_36*.root"); break; case '8': c->Add(protocol+dirname+datasetName+"/ntuple_skim_17*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_27*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_37*.root"); break; case '9': c->Add(protocol+dirname+datasetName+"/ntuple_skim_18*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_28*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_38*.root"); break; case '10': c->Add(protocol+dirname+datasetName+"/ntuple_skim_19*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_29*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_39*.root"); break; case '11': c->Add(protocol+dirname+datasetName+"/ntuple_skim_1_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_2_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_3_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_4*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_5*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_6*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_7*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_8*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_9*.root"); break; default: cout << "Wrong chunk" << endl; break; } } else { //the rest ? switch (chunk) { case '1': c->Add(protocol+dirname+datasetName+"/ntuple_skim_1_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_2_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_3_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_4_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_5_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_6_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_7_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_8_*.root"); break; case '2': c->Add(protocol+dirname+datasetName+"/ntuple_skim_9_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_10_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_11_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_12_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_13_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_14_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_15_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_16_*.root"); break; case '3': c->Add(protocol+dirname+datasetName+"/ntuple_skim_20_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_21_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_22_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_23_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_24_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_25_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_26_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_27_*.root"); break; case '4': c->Add(protocol+dirname+datasetName+"/ntuple_skim_30_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_31_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_32_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_33_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_34_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_35_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_36_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_37_*.root"); break; case '5': c->Add(protocol+dirname+datasetName+"/ntuple_skim_40_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_41_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_42_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_43_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_44_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_45_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_46_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_47_*.root"); break; case '6': c->Add(protocol+dirname+datasetName+"/ntuple_skim_50_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_51_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_52_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_53_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_54_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_55_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_56_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_57_*.root"); break; case '7': c->Add(protocol+dirname+datasetName+"/ntuple_skim_60_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_61_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_62_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_63_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_64_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_65_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_66_*.root"); break; case '8': c->Add(protocol+dirname+datasetName+"/ntuple_skim_70_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_71_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_72_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_73_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_74_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_75_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_76_*.root"); break; case '9': c->Add(protocol+dirname+datasetName+"/ntuple_skim_80_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_81_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_28_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_29_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_38_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_39_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_48_*.root"); break; case '10': c->Add(protocol+dirname+datasetName+"/ntuple_skim_58_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_59_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_68_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_69_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_78_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_79_*.root"); break; case '11': c->Add(protocol+dirname+datasetName+"/ntuple_skim_17_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_18_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_19_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_49_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_77_*.root"); c->Add(protocol+dirname+datasetName+"/ntuple_skim_67_*.root"); break; default: cout << "Wrong chunk" << endl; break; } } return c; }