int makeDirs(const char *path) { char dir[MAX_NAME_LEN]; char file[MAX_NAME_LEN]; int status; rodsLog (LOG_DEBUG, "makeDirs: %s", path); if (path == NULL) { rodsLog (LOG_ERROR, "makeDirs: input path is NULL"); return (SYS_INTERNAL_NULL_INPUT_ERR); } splitPathByKey ((char *) path, dir, file, '/'); if(isDirectory(dir) < 0) { // parent not exist // call recursively status = makeDirs(dir); if(status < 0) { return (status); } } // parent now exist status = mkdir(path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); if(status == -EEXIST) { return (0); } return status; }
static int _preparePreloadCacheDir(const char *path) { int status; status = makeDirs(path); return status; }
bool AmeJobMan::makeDirs(wxFileName f){ wxFileName p = f.GetPath(); if(f.DirExists()) return true; if(!p.DirExists() && !makeDirs(p)) return false; return f.Mkdir(); }
static int _prepareBufferDir(const char *path) { int status; status = makeDirs(path); return status; }
void makeDirOnlyOnce(char *dir, struct hash *hash) /* Check if dir is already in hash. If so we're done. If not make dir and add it to hash. */ { if (!hashLookup(hash, dir)) { verbose(2, "make dir %s\n", dir); hashAdd(hash, dir, NULL); makeDirs(dir); } }
int prepareDir(const char *path) { int status; char dir[MAX_NAME_LEN], file[MAX_NAME_LEN]; if (path == NULL) { rodsLog (LOG_ERROR, "prepareDir: input path is NULL"); return (SYS_INTERNAL_NULL_INPUT_ERR); } splitPathByKey ((char *) path, dir, file, '/'); // make dirs status = makeDirs(dir); return status; }
void CreateDatacards(float XMIN, float XMAX, int CAT_MIN,int CAT_MAX,int BRN_ORDER_NOM, int BRN_ORDER_VBF, TString TR, TString OUTPATH, TString CATVETO="", int MASS, float XMAXDIFF=0.) { TString PATH(TString::Format("%s/output/",OUTPATH.Data()).Data()); const int NCAT = 7; const int NF = 6; const int NMASS = 5; //---- uncertainties ------------------------------------- const float UNC_BR[NMASS] = {1.024,1.028,1.032,1.037,1.043}; const float UNC_UEPS_VBF[NCAT] = {1.04,1.02,0.97,0.93,1.02,1.03,1.04}; const float UNC_JES_VBF[NCAT] = {1.06,1.08,1.09,1.10,1.06,1.08,1.10}; const float UNC_JER_VBF[NCAT] = {0.97,0.96,0.97,0.98,0.99,0.98,0.99}; const float UNC_TRIG_VBF[NCAT] = {1.03,1.04,1.05,1.06,1.01,1.01,1.02}; const float UNC_CSV_VBF[NCAT] = {1.03,0.99,0.97,0.94,1.01,0.94,0.91}; const float UNC_QGL_VBF[NCAT] = {1.03,1.01,1.00,0.98,1.03,1.01,0.98}; const float UNC_SCALE_VBF[NCAT] = {1.00,1.00,1.01,1.02,1.03,1.03,1.05}; const float UNC_PDF_VBF[NCAT] = {1.02,1.02,1.02,1.02,1.03,1.03,1.03}; const float UNC_PDFGlobal_VBF[NMASS] = {1.028,1.028,1.028,1.027,1.027}; const float UNC_SCALEGlobal_VBF[NMASS] = {1.002,1.002,1.002,1.002,1.002}; const float UNC_UEPS_GF[NCAT] = {1.25,1.10,0.80,0.90,0.65,1.65,1.45}; const float UNC_JES_GF[NCAT] = {1.08,1.10,1.12,1.12,1.04,1.09,1.10}; const float UNC_JER_GF[NCAT] = {0.99,0.99,0.95,0.96,0.91,0.99,0.95}; const float UNC_TRIG_GF[NCAT] = {1.05,1.05,1.10,1.15,1.09,1.09,1.19}; const float UNC_CSV_GF[NCAT] = {0.99,0.97,0.93,0.93,0.93,0.97,0.90}; const float UNC_QGL_GF[NCAT] = {1.03,1.01,1.00,0.98,1.03,1.01,0.98}; const float UNC_SCALE_GF[NCAT] = {1.00,1.00,1.01,1.02,1.03,1.03,1.05}; const float UNC_PDF_GF[NCAT] = {1.04,1.04,1.04,1.04,1.05,1.04,1.04}; const float UNC_PDFGlobal_GF[NMASS] = {1.076,1.075,1.075,1.075,1.074}; const float UNC_SCALEGlobal_GF[NMASS] = {1.081,1.079,1.078,1.077,1.077}; vector<int> vCATVETO = tokenize(CATVETO); TString tCATVETO = tag(CATVETO); bool FreeTF=false, TF=false; if (TR!="" && TR!="BRN") TF=true; if (TF && (TR(0,5)!="Fixed"&&TR!="EXPO")) FreeTF=true; TString sTRF=""; if (TR(0,5)=="Fixed") sTRF = TR(5,4); else sTRF = TR; if (XMAXDIFF==0) TFile *fData = TFile::Open(PATH+"data_shapes_workspace_"+TString::Format("BRN%dp%d_B%.f-%.f",BRN_ORDER_NOM,BRN_ORDER_VBF,XMIN,XMAX)+"_Fit"+TR+".root"); else TFile *fData = TFile::Open(PATH+"data_shapes_workspace_"+TString::Format("BRN%dp%d_B%.f-%.f%.f",BRN_ORDER_NOM,BRN_ORDER_VBF,XMIN,XMAX,XMAX+XMAXDIFF)+"_Fit"+TR+".root"); if (XMAXDIFF==0) TFile *fSig = TFile::Open(PATH+"signal_shapes_workspace_"+TString::Format("B%.f-%.f.root",XMIN,XMAX)); else TFile *fSig = TFile::Open(PATH+"signal_shapes_workspace_"+TString::Format("B%.f-%.f%.f.root",XMIN,XMAX,XMAX+XMAXDIFF)); RooWorkspace *wData = (RooWorkspace*)fData->Get("w"); RooWorkspace *wSig = (RooWorkspace*)fSig->Get("w"); TString nameData = fData->GetName(); TString nameDataShort = nameData(nameData.Last('/')+1,nameData.Length()); TString nameSig = fSig->GetName(); TString nameSigShort = nameSig(nameSig.Last('/')+1,nameSig.Length()); char name[1000]; int H_MASS[5] = {115,120,125,130,135}; float nData[NCAT],nZ[NCAT],nTop[NCAT],nSigVBF[5][NCAT],nSigGF[5][NCAT]; for(int i=CAT_MIN;i<=CAT_MAX;i++) { sprintf(name,"yield_data_CAT%d",i); nData[i] = float((RooRealVar*)wData->var(name)->getValV()); sprintf(name,"yield_ZJets_CAT%d",i); nZ[i] = ((RooRealVar*)wData->var(name))->getValV(); sprintf(name,"yield_Top_CAT%d",i); nTop[i] = ((RooRealVar*)wData->var(name))->getValV(); for(int m=0;m<5;m++) { if (H_MASS[m]!=MASS) continue; sprintf(name,"yield_signalVBF_mass%d_CAT%d",H_MASS[m],i); nSigVBF[m][i] = ((RooRealVar*)wSig->var(name))->getValV(); sprintf(name,"yield_signalGF_mass%d_CAT%d",H_MASS[m],i); nSigGF[m][i] = ((RooRealVar*)wSig->var(name))->getValV(); } } makeDirs(OUTPATH); makeDirs(OUTPATH+"/output/"); makeDirs(OUTPATH+"/output/datacards"); for(int m=0;m<5;m++) { if (H_MASS[m]!=MASS) continue; cout << m << endl; ofstream datacard; if (XMAXDIFF==0) sprintf(name,"%s/output/datacards/datacard_m%d_BRN%dp%d_B%.f-%.f_CAT%d-CAT%d%s_Fit%s.txt",OUTPATH.Data(),H_MASS[m],BRN_ORDER_NOM,BRN_ORDER_VBF,XMIN,XMAX,CAT_MIN,CAT_MAX,tCATVETO.Data(),TR.Data()); else sprintf(name,"%s/output/datacards/datacard_m%d_BRN%dp%d_B%.f-%.f%.f_CAT%d-CAT%d%s_Fit%s.txt",OUTPATH.Data(),H_MASS[m],BRN_ORDER_NOM,BRN_ORDER_VBF,XMIN,XMAX,XMAX+XMAXDIFF,CAT_MIN,CAT_MAX,tCATVETO.Data(),TR.Data()); cout<<"======================================="<<endl; cout<<"Creating datacard: "<<name<<endl; cout<<"======================================="<<endl; datacard.open(name); datacard.setf(ios::right); datacard<<"imax "<<CAT_MAX-CAT_MIN+1-vCATVETO.size()<<"\n"; datacard<<"jmax *"<<"\n"; datacard<<"kmax *"<<"\n"; datacard<<"----------------"<<"\n"; datacard<<"shapes data_obs * "<<nameDataShort<<" w:data_hist_$CHANNEL"<<"\n"; datacard<<"shapes qcd * "<<nameDataShort<<" w:qcd_model_Fit"<<TR.Data()<<"_$CHANNEL"<<"\n"; datacard<<"shapes top * "<<nameDataShort<<" w:Top_model_$CHANNEL"<<"\n"; datacard<<"shapes zjets * "<<nameDataShort<<" w:Z_model_$CHANNEL"<<"\n"; datacard<<"shapes qqH * "<<nameSigShort<<" w:signal_model_m"<<H_MASS[m]<<"_$CHANNEL \n"; datacard<<"shapes ggH * "<<nameSigShort<<" w:signal_model_m"<<H_MASS[m]<<"_$CHANNEL \n"; datacard<<"----------------"<<"\n"; datacard<<"bin "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; sprintf(name,"CAT%d ",i); datacard<<name; } datacard<<"\n"; datacard<<"observation "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<"-1 "; } datacard<<"\n"; datacard<<"----------------"<<"\n"; datacard<<"bin "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; sprintf(name,"CAT%d CAT%d CAT%d CAT%d CAT%d ",i,i,i,i,i); datacard<<name; } datacard<<"\n"; datacard<<"process "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<"qqH ggH qcd top zjets "; } datacard<<"\n"; datacard<<"process "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<"0 -1 1 1 1 "; } datacard<<"\n"; datacard<<"rate "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; cout<<"cat#"<<i<<setw(8)<<nData[i]<<setw(8)<<nSigVBF[m][i]<<setw(8)<<nSigGF[m][i]<<setw(8)<<nTop[i]<<setw(8)<<nZ[i]<<setw(8)<<", S/B = "<<(nSigVBF[m][i]+nSigGF[m][i])/nData[i]<<endl; datacard<<nSigVBF[m][i]<<" "<<nSigGF[m][i]<<" "<<nData[i]<<" "<<nTop[i]<<" "<<nZ[i]<<" "; } datacard<<"\n"; datacard<<"----------------"<<"\n"; datacard<<"BR lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_BR[m]<<setw(NF)<<UNC_BR[m]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"QCDscale_qqh lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_SCALEGlobal_VBF[m]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"QCDscale_ggh lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"-"<<setw(NF)<<UNC_SCALEGlobal_GF[m]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"pdf_qqbar lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_PDFGlobal_VBF[m]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"pdf_gg lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"-"<<setw(NF)<<UNC_PDFGlobal_GF[m]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"lumi lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"1.026"<<setw(NF)<<"1.026"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_scale_j_ACCEPT lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_JES_VBF[i]<<setw(NF)<<UNC_JES_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"pdf_ACCEPT lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"1.05"<<setw(NF)<<"1.05"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_res_j_ACCEPT lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_JER_VBF[i]<<setw(NF)<<UNC_JER_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_qqH_hbb_trigger lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_TRIG_VBF[i]<<setw(NF)<<UNC_TRIG_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_qqH_hbb_btag lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_CSV_VBF[i]<<setw(NF)<<UNC_CSV_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_qqH_hbb_qgl lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_QGL_VBF[i]<<setw(NF)<<UNC_QGL_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"UEPS lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_UEPS_VBF[i]<<setw(NF)<<UNC_UEPS_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_qqH_hbb_QCDscale lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_SCALE_VBF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_ggH_hbb_QCDscale lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"-"<<setw(NF)<<UNC_SCALE_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_qqH_hbb_pdf lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<UNC_PDF_VBF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; datacard<<"CMS_ggH_hbb_pdf lnN "; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; datacard<<setw(NF)<<"-"<<setw(NF)<<UNC_PDF_GF[i]<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } datacard<<"\n"; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; sprintf(name,"CMS_vbfbb_qcd_norm_CAT%d lnU ",i); datacard<<name<<setw(NF); for(int j=CAT_MIN;j<=CAT_MAX;j++) { if (veto(vCATVETO, j)) continue; if (j == i) { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<1.5<<setw(NF)<<"-"<<setw(NF)<<"-"; } else { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } } datacard<<"\n"; } datacard<<"\n"; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; sprintf(name,"CMS_vbfbb_zjets_norm_CAT%d lnN ",i); datacard<<name<<setw(NF); for(int j=CAT_MIN;j<=CAT_MAX;j++) { if (veto(vCATVETO, j)) continue; if (j == i) { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"1.3"; } else { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } } datacard<<"\n"; } datacard<<"\n"; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; sprintf(name,"CMS_vbfbb_top_norm_CAT%d lnN ",i); datacard<<name<<setw(NF); for(int j=CAT_MIN;j<=CAT_MAX;j++) { if (veto(vCATVETO, j)) continue; if (j == i) { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"1.3"<<setw(NF)<<"-"; } else { datacard<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"<<setw(NF)<<"-"; } } datacard<<"\n"; } datacard<<"\n"; datacard<<"#--- signal and Z shape parameters ------ \n"; datacard<<"\n"; datacard<<"CMS_vbfbb_scale_mbb_selNOM param 1.0 0.02"<<"\n"; datacard<<"CMS_vbfbb_scale_mbb_selVBF param 1.0 0.02"<<"\n"; datacard<<"CMS_vbfbb_res_mbb_selNOM param 1.0 0.1"<<"\n"; datacard<<"CMS_vbfbb_res_mbb_selVBF param 1.0 0.1"<<"\n"; for(int i=CAT_MIN;i<=CAT_MAX;i++) { if (veto(vCATVETO, i)) continue; //cout << "CAT" << i << endl; /* sprintf(name,"CMS_vbfbb_scale_mbb_CAT%d",i); datacard<<name<<" param 1.0 0.02"<<"\n"; sprintf(name,"CMS_vbfbb_res_mbb_CAT%d",i); datacard<<name<<" param 1.0 0.1"<<"\n"; */ sprintf(name,"mean_m%d_CAT%d",H_MASS[m],i); RooRealVar *vmass = (RooRealVar*)wSig->var(name); double mass = vmass->getValV(); double emass = vmass->getError(); datacard<<name<<" param "<<mass<<" "<<emass<<"\n"; sprintf(name,"sigma_m%d_CAT%d",H_MASS[m],i); RooRealVar *vsigma = (RooRealVar*)wSig->var(name); double sigma = vsigma->getValV(); double esigma = vsigma->getError(); datacard<<name<<" param "<<sigma<<" "<<esigma<<"\n"; sprintf(name,"Top_mean_CAT%d",i); RooRealVar *Tvmass = (RooRealVar*)wData->var(name); double Tmass = Tvmass->getValV(); double Temass = 0.01*Tmass; //Tvmass->getError(); datacard<<name<<" param "<<Tmass<<" "<<Temass<<"\n"; sprintf(name,"Top_sigma_CAT%d",i); RooRealVar *Tvsigma = (RooRealVar*)wData->var(name); double Tsigma = Tvsigma->getValV(); double Tesigma = 0.05*Tsigma;//Tvsigma->getError(); datacard<<name<<" param "<<Tsigma<<" "<<Tesigma<<"\n"; sprintf(name,"Z_mean_CAT%d",i); RooRealVar *Zvmass = (RooRealVar*)wData->var(name); double Zmass = Zvmass->getValV(); double Zemass = Zvmass->getError(); datacard<<name<<" param "<<Zmass<<" "<<Zemass<<"\n"; sprintf(name,"Z_sigma_CAT%d",i); RooRealVar *Zvsigma = (RooRealVar*)wData->var(name); double Zsigma = Zvsigma->getValV(); double Zesigma = Zvsigma->getError(); datacard<<name<<" param "<<Zsigma<<" "<<Zesigma<<"\n"; for(int j=5; j>=0; j--){ if (i>0 && i < 4 && TF && !FreeTF) { sprintf(name,"trans_%s_p%d_CAT%d",sTRF.Data(),j,i); if (wData->var(name)) { cout << name << endl; datacard<<name<<" param "<<((RooRealVar*)wData->var(name))->getVal()<<" "<<((RooRealVar*)wData->var(name))->getError()<<"\n"; } } if (i > 4 && TF && !FreeTF) { sprintf(name,"trans_%s_p%d_CAT%d",sTRF.Data(),j,i); if (wData->var(name)) { cout << name << endl; datacard<<name<<" param "<<((RooRealVar*)wData->var(name))->getVal()<<" "<<((RooRealVar*)wData->var(name))->getError()<<"\n"; } } } } datacard.close(); } fData->Close(); fSig->Close(); }
bool AmeJobMan::updatePath(AmeJob *job, wxString sf1){//only want to use renameTo if same partition job->m_fn = wxEmptyString; wxString sf0 = job->getAbsolutePath(); if(sf1==wxEmptyString || sf0==sf1) return true; //RULES ENABLED? // if(AmeRules.mImod==AmeRules.M_NOREN) return true; //POPT("SRC FILE HEALTH"); //SOURCE FILE HEALTHY? if(!wxFile::Exists(sf0)){ job->setError(wxT("File does not exist.")); //A.gui.println(sf0+" cannot be moved. File not found."); return false; } //POPT("DST FILE HEALTH"); //POPT("updatePath3"); //DESTINATION FILE HEALTHY? if(wxFile::Exists(sf1)){ wxFile f(sf1); if(job->m_size==f.Length()){ //could be the same job->setNewFilePath(sf1); //A.gui.println(sf0+" will be moved to "+sf1+" later."); return true; } job->setError(wxT("File cannot be moved. Destination file already exists!")); //A.gui.println(sf0+" cannot be moved to "+sf1+": Destination file already exists!"); return false; } //POPT("SRC FOLDER HEALTH"); //DESTINATION FOLDER OK? wxFileName fn(sf1); wxFileName parent = fn.GetPath(); if(!parent.DirExists() && !makeDirs(parent)){ job->setError(wxT("Folder")+parent.GetFullPath()+wxT(" cannot be created!")); //A.gui.println("Folder"+parent+" cannot be created!"); return false; } wxGetApp().m_jl->addPath(sf1); //job.mIdid = -1; //TRY TO MOVE: WINDOWS //POPT("TRY MOVE"); wxString p0 = sf0.Lower(); wxString p1 = sf1.Lower(); wxString sok = wxT("Cleanup after successful rename operation."); if(p0.at(1)==':'||p1.at(1)==':'){ //windows (not network) if(p0.at(0)==p1.at(0)){ //POPT("NOW MOVE"); if(job->rename(sf1)){ //moveSub(job.m_fc, f); //A.deleteFile(job.m_fc.getParentFile(), sok); //AmeJobMan::setJobFile(job, f); //A.gui.println("Renamed "+sf0+" to "+sf1); POSTM(MSG_LOG, SP2("Renamed %s to %s", sf0, sf1)); //AmeJobMan::removeFile(sf0); return true; } //A.gui.println(Hyper.error("Renaming failed!")+" ("+sf0+" to "+sf1+")"); return false; } job->setNewFilePath(sf1); //A.gui.println(sf0+" will be moved to "+sf1+" later."); return true; } POPT("NIX"); //TRY TO MOVE: *NIX if(job->rename(sf1)){ //linux can't rename over partitions //A.deleteFile(job.m_fc.getParentFile(), sok); //AmeJobMan.setJobFile(job, f); //A.gui.println("Renamed"+sf0+" to "+sf1); return true; } job->setNewFilePath(sf0); //A.gui.println(sf0+" will be moved to "+sf1+" later."); return true; //THE END }
bool PodSync::performSync( const char *pSrc, const char *pDst ) { DirectoryEnum srcEnumerator; DirectoryEnum dstEnumerator; FileInfo srcInfo; FileInfo dstInfo; FileInfo *pSrcInfo = &srcInfo; bool result = false; // Check that source is valid if( false == srcInfo.getInfo( pSrc )) { rWarning( "Could not get info: %s", pSrc ); return false; } // Check that destination is valid if( false == dstInfo.getInfo( pDst )) { rWarning( "Could not get info: %s", pDst ); if( false == makeDirs( pDst )) { rError( "Could not create destination: %s", pDst ); return false; } else { if( false == dstInfo.getInfo( pDst )) { rError( "Could not get info: %s", pDst ); return false; } } } // Check that destination is a directory if( false == dstInfo.isDir() ) { rError( "%s is not a directory", pDst ); return false; } rInfo( "Source: %s", srcInfo.getName() ); if( true == srcInfo.isDir() ) { rInfo( "Enumerating %s", srcInfo.getName() ); // Skip . and .. srcEnumerator.findFirst( pSrc ); srcEnumerator.findNext(); pSrcInfo = srcEnumerator.findNext(); while( 0 != pSrcInfo ) { result = processOneItem( pSrcInfo, &dstInfo ); if( false == result ) { rError( "Sync %s failed", pSrcInfo->getName() ); } pSrcInfo = srcEnumerator.findNext(); } } else { result = processOneItem( pSrcInfo, &dstInfo ); } return result; }
static void generateImgFiles(struct hgdpGeo *geo, char finalEpsFile[PATH_LEN], char finalPdfFile[PATH_LEN], char finalPngFile[PATH_LEN]) /* Using the frequencies given in geo and the population latitude and longitude * given above, plot allele frequency pie charts for each population on a world map. * Work in a temporary trash dir and then move result files to the given paths. */ { // The Generic Mapping Tools commands must have a writeable ./ and $HOME. // Use trashDirFile as a directory name, cd to that and work there. char cwd[PATH_LEN]; if (getcwd(cwd, sizeof(cwd)) == NULL) errAbort("PATH_LEN (%d) is too short.", PATH_LEN); struct tempName dirTn; trashDirFile(&dirTn, "hgc", "hgdpGeo", ""); makeDirs(dirTn.forCgi); mustChdir(dirTn.forCgi); char *realHome = getenv("HOME"); setenv("HOME", ".", TRUE); // Make trash files with coordinate specs for pie charts and full circles: char rootName[FILENAME_LEN]; splitPath(dirTn.forCgi, NULL, rootName, NULL); char pieFile[FILENAME_LEN], circleFile[FILENAME_LEN]; safef(pieFile, sizeof(pieFile), "%s_pie.txt", rootName); safef(circleFile, sizeof(circleFile), "%s_circle.txt", rootName); FILE *fPie = mustOpen(pieFile, "w"); FILE *fCir = mustOpen(circleFile, "w"); int i; for (i = 0; i < HGDPGEO_POP_COUNT; i++) { FILE *f = (geo->popFreqs[i] == 1.0) ? fCir : fPie; fprintf(f, "%.4f %.4f 0.65 0 %.4f\n", pops[i].latitude, pops[i].longitude, geo->popFreqs[i]*360); } fclose(fPie); fclose(fCir); // Build up an EPS image: copy a baseline EPS (map background), add SNP and allele labels, // and use ps2xy commands to allele frequency pie charts. char epsFile[FILENAME_LEN]; safef(epsFile, sizeof(epsFile), "%s.eps", rootName); char mapBgEps[PATH_LEN]; safef(mapBgEps, sizeof(mapBgEps), "%s/hgcData/hgdpGeoMap.eps", cwd); copyFile(mapBgEps, epsFile); FILE *fEps = mustOpen(epsFile, "a"); fprintf(fEps, hgdpGeoLabelFormat, geo->name, geo->name, geo->ancestralAllele, geo->ancestralAllele, geo->derivedAllele, geo->derivedAllele); fclose(fEps); //- run psxy on circle/pie spec trash files for AfrEurAsia and America char *psxy = cfgOption("hgc.psxyPath"); if (isEmpty(psxy)) errAbort("How did this get called? hg.conf doesn't have hgc.psxyPath."); runCommandAppend(psxyOrangeAeaCmd, psxy, pieFile, epsFile); runCommandAppend(psxyPieAeaCmd, psxy, pieFile, epsFile); runCommandAppend(psxyBlueAeaCmd, psxy, circleFile, epsFile); runCommandAppend(psxyOrangeAmCmd, psxy, pieFile, epsFile); runCommandAppend(psxyPieAmCmd, psxy, pieFile, epsFile); runCommandAppend(psxyBlueAmCmd, psxy, circleFile, epsFile); // Make PDF and PNG: struct pipeline *pl; char pdfFile[FILENAME_LEN], pngFile[FILENAME_LEN]; safef(pdfFile, sizeof(pdfFile), "%s.pdf", rootName); safef(pngFile, sizeof(pngFile), "%s.png", rootName); char *ps2pdfCmd[] = {"ps2pdf", epsFile, pdfFile, NULL}; char **cmdsPdf[] = {ps2pdfCmd, NULL}; pl = pipelineOpen(cmdsPdf, pipelineWrite, "/dev/null", NULL); pipelineClose(&pl); char *ps2raster = cfgOption("hgc.ps2rasterPath"); char *ghostscript = cfgOption("hgc.ghostscriptPath"); char gsOpt[PATH_LEN]; safef(gsOpt, sizeof(gsOpt), "-G%s", ghostscript); char *ps2RasterPngCmd[] = {ps2raster, gsOpt, "-P", "-A", "-Tg", "-E150", epsFile, NULL}; char **cmdsPng[] = {ps2RasterPngCmd, NULL}; pl = pipelineOpen(cmdsPng, pipelineRead, "/dev/null", NULL); pipelineClose(&pl); // Back to our usual working directory and $HOME: if (realHome == NULL) unsetenv("HOME"); else setenv("HOME", realHome, TRUE); mustChdir(cwd); // Move the result files into place: char tmpPath[PATH_LEN]; safef(tmpPath, sizeof(tmpPath), "%s/%s", dirTn.forCgi, epsFile); mustRename(tmpPath, finalEpsFile); safef(tmpPath, sizeof(tmpPath), "%s/%s", dirTn.forCgi, pdfFile); mustRename(tmpPath, finalPdfFile); safef(tmpPath, sizeof(tmpPath), "%s/%s", dirTn.forCgi, pngFile); mustRename(tmpPath, finalPngFile); // Clean up the temporary working directory (trash cleaner script doesn't // remove empty dirs: removeDir(dirTn.forCgi); }