Dear Alex,
In the way you did it, this_object->GetName() returns the content of the argument, not its name, so it is normal that the second part of your checks does not do what you want.
However, I would have expected this
cout << "Found object = " << this_object->GetName() << endl;
to print the list of your variable content:
Found object = DDbar
Found object = cut_def_file
...
so I do not understand when you wrote that nothing came out.
Anyhow, in your case, I would suggest to use TNamed objects like this
gProof->AddInput(new TNamed("jobname","DDBar"));
gProof->AddInput(new TNamed("cut_def_file", "/home/hep/smith/DTagVV/Ph"));
gProof->AddInput(new TNamed("require_NO_MCTag");
gProof->AddInput(new TNamed("fill_hists");
gProof->AddInput(new TNamed("nononres");
Inside the selector, for example in Begin(), you can access the information like this
// jobname
TNamed *n = dynamic_cast<TNamed *>(fInput->FindObject("jobname"));
TString jobname = n ? n->GetTitle() : "";
Info("Begin","args: jobname: %s", jobname.Data());
// cut_def_file
n = dynamic_cast<TNamed *>(fInput->FindObject("cut_def_file"));
TString cut_def_file = n ? n->GetTitle() : "";
Info("Begin","args: cut_def_file: %s", cut_def_file.Data());
// Booleans
Bool_t require_MCTag = fInput->FindObject("require_MCTag") ? kTRUE : kFALSE;
Bool_t require_NO_MCTag = fInput->FindObject("require_NO_MCTag") ? kTRUE : kFALSE;
Bool_t require_DTag = fInput->FindObject("require_DTag") ? kTRUE : kFALSE;
Bool_t fill_hists = fInput->FindObject("fill_hists") ? kTRUE : kFALSE;
Bool_t fully_tagged_only = fInput->FindObject("fully_tagged_only") ? kTRUE : kFALSE;
Bool_t nononres = fInput->FindObject("nononres") ? kTRUE : kFALSE;
If you have more complicated structures you may consider defining a dedicated argument class. The class needs to be uploaded to the slaves. I can send en example, if you wish.
Hope it helps.
Gerri